當前位置:首頁 » 編程語言 » c語言tcpsocket
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言tcpsocket

發布時間: 2022-03-16 00:05:46

1. c語言的文件管理器建立於SOCKET TCP通信

C語言沒有SOCKET,必須調用操作系統API,用windows或linux提供的。結構應該設計成這樣,所有的功能都在server,客戶端只提供界面,客戶端選擇好功能,輸入,密碼,賬號後,把這些資料通過socket的傳到伺服器,伺服器通過驗證後,把你要的東西通過SOCKET返回
我給你說思路吧,如果你還不會寫,那沒辦法,要用到的東西就是socket和dir目錄操作,還有一些linux的shell命令。
客戶機密碼驗證後,輸入一條shell命令,打包成消息發給伺服器,伺服器得到消息,拆出消息中的命令,實現操作,把結果定向輸入到一個文件,然後通過讀取,把文件的內容反回給客戶端。大致是這樣。不要想著別人給你框架,你只要在裡面填一點東西,這樣對你學習沒有幫助的。

2. 怎麼用C語言的socket測試兩個主機之間的TCP傳輸速度

電腦上通常有個echo埠,向這個埠發送什麼數據,此埠就回應什麼數據。
你可以從A機器向B機器的echo埠(埠號=7)發起TCP連接,連接成功後,發送少量數據,並接收對端回送的數據。A機器通過計算數據一去一回的時間差,判斷出網速。
此辦法適用於精度要求不高的場合。

3. 請問用C語言 socket編程,如何使TCP客戶端實現網路恢復後自動重連的功能

建議你去我的空間博客中看一下關於socket連接過程,你會明白為什麼連接不了,因為accept後返回的socket是系統隨機分配的。TCP指的點對點,其實就是socket對socket。

4. 用c語言寫個 socket tcp 的

#include <winsock2.h>
#include <stdio.h>
#include <pthread.h>
#pragma comment(lib,"ws2_32.lib")
typedef struct{
SOCKET accpt;
int lock;
}Arg;
void *transfer(void *arg)
{
Arg * info = (Arg *)arg;
SOCKET clientSock;
char recvbuf[102];
char sendBuf[] = "10";
int ret;
memcpy(&clientSock,(void*)&info->accpt,sizeof(clientSock));
info->lock =1;
while (TRUE)
{
ret = send(clientSock,sendBuf,2,0);
if (ret == -1)
{
break;
}
ret = recv(clientSock,recvbuf,102,0);
printf("%s ",recvbuf);
}
return (void *)0;
}
void* timer(void *arg)
{
time_t last = time(NULL);
time_t now;
int i = 20;
while(i--)
{
now = time(NULL);
if(now - last == 1)
{
printf("1s past! ");
last = now;
}
Sleep(500);
}
printf("timer exit. ");
return (void *)0;
}
int main(void) {
WSADATA wsaData;
SOCKET ListenSocket;
SOCKADDR_IN service,client;
int len = sizeof(client);
Arg argument;
pthread_t tid;
char sendBuf[] = "ID=2;WHAT=host";
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Error at WSAStartup() ");
return 1;
}
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld ", WSAGetLastError());
WSACleanup();
return 1;
}
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27115);
if (bind( ListenSocket,
(SOCKADDR*) &service,
sizeof(service)) == SOCKET_ERROR) {
printf("bind() failed. ");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
printf("Error listening on socket. ");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
argument.lock = 1;
printf("Waiting for client to connect... ");
pthread_create(&tid,NULL,timer,NULL);
while(TRUE){
argument.accpt = accept( ListenSocket, (SOCKADDR*)&client, &len );
if (argument.accpt == INVALID_SOCKET) {
printf("accept failed: %d ", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else {
printf("accept%s:%d ",inet_ntoa(client.sin_addr),client.sin_port);
while (!argument.lock);
argument.lock = 0;
// sendto(argument.accpt,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&client,len);
pthread_create(&tid,NULL,transfer,&argument);
//send(AcceptSocket,sendBuf,sizeof(sendBuf),0);
}
}
// No longer need server socket
closesocket(ListenSocket);
WSACleanup();
return 0;
}

發送數據格式按需求。可以發送字元串,也可以發送結構體。如果發送結構體的話,要注意序列化和反序列化。程序例子是伺服器對每個客戶端的connect動作起一個線程去交互。還有一個線程是定時器。

5. 在linux系統中用c語言編寫一個網路tcp主從通信的socket程序,要求發送數據包

沒有你想像的那麼復雜,其實監聽埠,然後read或者write就夠了。

6. 怎樣用C語言做socket網路編程

mfc只是對socket進行了一些封裝,大部分人做網路編程都是用的原始的socket,比如如下介面都可以在c下進行調用
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
這些介面是在Winsock2.h中定義的不是在mfc中定義的,你只需要包含Winsock2.h頭文件和Ws2_32.lib庫就可以了。

7. 我想了解下 TCP c語言編碼 還有socket編碼

這是個標準的SOCKET客戶端代碼
你哪裡不會了?難道要一行一行的注釋?

我給你簡單解釋一下SOCKET編程的模型吧:
伺服器 socket 函數 返回 描述符 fd
bind fd到相關的ip地址和埠
listen

最後accept 阻塞 等待客戶端的鏈接

客戶端 client
socket 函數 返回描述符 fd
直接 connect 到固定ip地址和埠的 伺服器
當connect的伺服器正在accpet 那麼

伺服器accept會返回一個 fd
這個時候 伺服器就可以通過這個fd和客戶端進行通信
客戶端connnect成功後,就可以通過自己的fd和伺服器進行通信

上面是一個標準的socket通信模型
如果看懂了 那就好

否則你要先弄清楚這個 才能看懂代碼 而不是讓別人一句一句告訴你

8. Windows系統用C語言寫TCP通信

#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
typedef struct{
SOCKET accpt;
int lock;
}Arg;
void *transfer(void *arg)
{
Arg * info = (Arg *)arg;
SOCKET clientSock;
char recvbuf[102];
char sendBuf[] = "10";
int ret;
memcpy(&clientSock,(void*)&info->accpt,sizeof(clientSock));
info->lock =1;
while (TRUE)
{
ret = send(clientSock,sendBuf,2,0);
if (ret == -1)
{
break;
}
ret = recv(clientSock,recvbuf,102,0);
printf("%s\n",recvbuf);
}
return (void *)0;
}
void* timer(void *arg)
{
time_t last = time(NULL);
time_t now;
int i = 20;
while(i--)
{
now = time(NULL);
if(now - last == 1)
{
printf("1s past!\n");
last = now;
}
Sleep(500);
}
printf("timer exit.\n");
return (void *)0;
}
int main(void) {
WSADATA wsaData;
SOCKET ListenSocket;
SOCKADDR_IN service,client;
int len = sizeof(client);
Arg argument;
pthread_t tid;
char sendBuf[] = "ID=2;WHAT=host";
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Error at WSAStartup()\n");
return 1;
}
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27115);
if (bind( ListenSocket,
(SOCKADDR*) &service,
sizeof(service)) == SOCKET_ERROR) {
printf("bind() failed.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
printf("Error listening on socket.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
argument.lock = 1;
printf("Waiting for client to connect...\n");
pthread_create(&tid,NULL,timer,NULL);
while(TRUE){
argument.accpt = accept( ListenSocket, (SOCKADDR*)&client, &len );
if (argument.accpt == INVALID_SOCKET) {
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else {
printf("accept%s:%d\n",inet_ntoa(client.sin_addr),client.sin_port);
while (!argument.lock);
argument.lock = 0;
// sendto(argument.accpt,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&client,len);
pthread_create(&tid,NULL,transfer,&argument);
//send(AcceptSocket,sendBuf,sizeof(sendBuf),0);
}
}
// No longer need server socket
closesocket(ListenSocket);
WSACleanup();
return 0;
}

9. C語言實現socket編程TCP通信的問題

我做試驗,發現是如果你這樣寫:
char sendbuf[1024] = {"123456\n"};
也就是發送數據加上了換行,服務端立即顯示了。看來不加換行就被緩存了(應該是被服務端收到但緩存了)。

10. 有人能夠搞一個c語言下的socket編程的代碼,就只要實現tcp的連接就行了

留個郵箱,我發給你,client server端都有,vc++6.0工程。