首先編寫客戶端與服務端能進行簡單的連線,這個較為容易:
服務端的編寫流程是:啟動 winsock、建立套接字、繫結套接字、監聽、接收連線、關閉連線、關閉套接字、關閉 winsock
客戶端的編寫流程是:啟動 winsock、建立套接字、連線、關閉連線和套接字、關閉 winsock
**較為簡單,具體如下:
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main()
//建立socket
slisten = socket(af_inet, sock_stream, 0);
if (slisten == invalid_socket)
//繫結ip位址
ser.sin_family = af_inet;
ser.sin_port = htons(iport);
ser.sin_addr.s_addr = htonl(inaddr_any);
if (bind(slisten, (lpsockaddr)&ser, sizeof(ser)) == socket_error)
//監聽
if (listen(slisten, 5) == socket_error)
ilen = sizeof(cli);//獲取客戶端網路位址的長度
//接受連線和傳送歡迎資訊
//用迴圈使程式一直執行
while (true)
//顯示客戶端的 ip 資訊
char clibuf[20] = ;
inet_ntop(af_inet, (void*)&cli.sin_addr, clibuf, 16);
std::cout
<< "accept client ip:"
<< clibuf << ":"
<< ntohs(cli.sin_port) << std::endl;
//傳送資訊給客戶端
isend = send(saccept, buf, sizeof(buf), 0);
if (isend == socket_error)
else
if (isend == 0)
else
//關閉連線
closesocket(saccept);
}//關閉監聽
closesocket(slisten);
//關閉 winsock
wsacleanup();
}
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main()
char addr[20] = ;
std::cin >> addr;//輸入服務端 ip 位址
//建立socket
ser.sin_family = af_inet;
ser.sin_port = htons(iport);
inet_pton(af_inet, addr, (void*)&ser.sin_addr.s_addr);
sclient = socket(af_inet, sock_stream, 0);
if (sclient == invalid_socket)
//連線並進行簡單的操作
if (connect(sclient, (struct sockaddr*)&ser, sizeof(ser)) == invalid_socket)
else
else
if (ilen == socket_error)
std::cout
<< "recv() data from server:"
<< buf << std::endl;
}//關閉連線並退出
closesocket(sclient);
//關閉 winsock
wsacleanup();
system("pause");
}
需要注意的是在客戶端輸入的 ip 位址,這個位址需要輸入本地電腦的 ip 位址,使用 cmd 調出 windows 的 dos 介面,輸入 ipconfig 命令,找到 ipv4 位址,然後在 客戶端進行填寫即可 C 服務端與客戶端
c 服務端與客戶端連線實現的由來 那麼既然乙個伺服器端口可以應對多個客戶端連線,那麼接下來我們就看一下,如何讓多個客戶端與服務端連線。如同我們上面所說的,乙個tcpclient就是乙個socket,所以我們只要建立多個tcpclient,然後再呼叫connect 方法就可以了 c 服務端與客戶端連線...
服務端與客戶端互動
搭建伺服器 伺服器端 using system.net.sockets using system.net using system.io using system.text namespace sockerservice endpoint point new ipendpoint ipaddress...
NodeJS TCP客戶端與服務端
server.js var net require net 載入網路模組 var clients 0 建立id來引用連線的每乙個客戶端 var server net.createserver function client client.write welcome client clientid 使...