C 實現TCP通訊

2021-08-04 15:05:25 字數 2536 閱讀 6772

服務端

#include "initsock.h"

#include

#include

#include

#include

using

namespace

std;

cinitsock initsock; // 初始化winsock庫

sockaddr_in serveraddr;

//sockaddr_in remoteaddr;

int naddrlen = sizeof(serveraddr);

socket slisten = ::socket(af_inet, sock_stream, 0);

socket sclient[20] = ;

int q=0;

dword _stdcall threadproc_sea(lpvoid ipparamenter)

}return0;}

dword _stdcall threadproc(lpvoid ipparamenter)

char sendbuf[20] = ;

inet_ntop(af_inet, (void*)&serveraddr.sin_addr, sendbuf, 16);

printf("接受到乙個連線:%s \r\n", sendbuf);

q++;

return0;}

int main()

// 填充sockaddr_in結構

zeromemory((char *)&serveraddr, sizeof(serveraddr));

serveraddr.sin_family = af_inet;

serveraddr.sin_port = htons(8888); /*本地監聽埠:1234*/

serveraddr.sin_addr.s_addr = htonl(inaddr_any);

// 繫結這個套節字到乙個本地位址

if (::bind(slisten, (lpsockaddr)&serveraddr, sizeof(serveraddr)) == socket_error)

// 進入監聽模式

if (::listen(slisten, 2) == socket_error)

// 迴圈接受客戶的連線請求

char sztext = " tcp server demo! \r\n";

createthread(null, 0, threadproc, null, 0, null);

while (true)

}// 關閉同客戶端的連線

for (int i = 0; i < q; i++)

// 關閉監聽套節字

::closesocket(slisten);

return

0;}

客戶端

#include "initsock.h"

#include

#include

#include

using

namespace

std;

cinitsock initsock; // 初始化winsock庫

char buff[256];

socket s = ::socket(af_inet, sock_stream, ipproto_tcp);

dword _stdcall go(lpvoid ipparamenter)

}return0;}

int main()

// 也可以在這裡呼叫bind函式繫結乙個本地位址

// 否則系統將會自動安排

// 填寫遠端位址資訊

sockaddr_in servaddr;

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(2001);

// 注意,這裡要填寫伺服器程式(tcpserver程式)所在機器的ip位址

// 如果你的計算機沒有聯網,直接使用127.0.0.1即可

inet_pton(af_inet, "192.168.1.1", (void*)&servaddr.sin_addr.s_un.s_addr);

if (::connect(s, (sockaddr*)&servaddr, sizeof(servaddr)) == -1)

cout

<< "connect succeed!\n";

char sztext[256];

/*while (true)

*/// 向伺服器端傳送資料

/* sleep(1000);

strcpy_s(sztext,"1023\n");

sztext[255] = '\0';

::send(s, sztext, strlen(sztext), 0);

}*/// 關閉套節字

::closesocket(s);

return

0;}

TCP通訊C 實現

tcp客戶端與伺服器端通訊模型 伺服器端實現 include include pragma comment lib,ws2 32 using namespace std void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 ...

linux下C 實現TCP通訊

udp教程可以檢視 tcp通訊協議鏈結過程如下圖所示。由上圖可看出 tcp的伺服器需要bind listen accept tcp的客戶端需要connect 伺服器 如下 include include include include include include include include ...

socket實現TCP通訊

tcp是一種可靠的,面向連線的協議。在socket中,建立tcp連線的過程大致如下 伺服器端 1.初始化套接字 2.建立伺服器socket 3.將本機位址與伺服器socket繫結在一起 4.伺服器開始監聽 5.伺服器確認請求 確認之前時一種阻塞的狀態 accept 函式生成乙個新的socket。6....