winsock實現基於TCP的客戶端 伺服器通訊

2021-06-15 06:37:10 字數 1787 閱讀 7241

一、伺服器端程式**

#include

#include

#pragma comment(lib, "ws2_32.lib")//或者在專案屬性的聯結器的輸入的附加依賴項中新增ws2_32.lib

#define  port 5000

void main()

slisten=socket(af_inet,sock_stream,0);//建立套接字

if (slisten==invalid_socket)

//建立伺服器位址

serv.sin_family=af_inet;

serv.sin_port=htons(port);//把乙個雙位元組主機位元組順序的資料轉換為網路位元組順序

serv.sin_addr.s_addr=htonl(inaddr_any);//把四位元組主機位元組順序轉換為網路位元組順序,inaddr_any為系統指定的ip位址

//繫結

if (bind(slisten,(lpsockaddr)&serv,sizeof(serv))==socket_error)

//進入監聽狀態

if (listen(slisten,5)==socket_error)//正在等待連線的最大個數是5

ilen=sizeof(client);//初始化客戶位址長度

//進入迴圈等待客戶端連線請求

while(1)

printf("accepted client ip:[%s],port:[%d]\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port));

//給客戶端傳送資料

isend=send(saccept,buf,sizeof(buf),0);

if (isend==socket_error)

else if (isend==0)

else

closesocket(saccept);

}closesocket(slisten);

wsacleanup();

}二、客戶端**

#pragma  comment(lib,"ws2_32.lib")

#include

#include

#define  port 5000

#define  buffer 1024

void main(int argc, char* argv)

//需要連線的伺服器位址資訊

serv.sin_family=af_inet;//需要連線的伺服器的位址資訊

serv.sin_addr.s_addr=inet_addr(argv[1]);//將命令列的ip位址轉換為二進位制表示的網路位元組順序ip位址

serv.sin_port=htons(port);

client=socket(af_inet,sock_stream,0);//建立客戶端流套接字

if (client==invalid_socket)

//請求與伺服器建立tcp連線

if (connect(client,(struct sockaddr*)&serv,sizeof(serv))==invalid_socket)

else

else if (ilen==socket_error)

printf("recv() data from server:%s\n",buf);

}closesocket(client);

wsacleanup();

printf("press any key to continue");

while(1);}

WinSock之簡單的TCP通訊程式設計

編寫客戶端與服務端程式,客戶端與服務端建立tcp連線後 1 服務端向客戶端傳送一條內容為 connect succeed.please send a message to me.然後等待接收客戶端傳送來的一條資訊,收到後顯示該資訊並關閉連線,繼續等待其他客戶的鏈結請求。2 客戶端在與伺服器的連線寄建...

winSock 實現檔案的傳輸

簡單的c s架構的檔案傳輸,使用的是阻塞模式,下次嘗試非阻塞的和非同步模式的。ps.最近在看客戶端 include stdafx.h include pragma comment lib,ws2 32.lib int main socket hsocket hsocket socket af ine...

程式設計實現基於tcp的socket程式設計

server端 public class server socket.shutdowninput 關閉輸入流 4 獲取輸出流,響應客戶端的請求 outputstream os socket.getoutputstream printwriter pw new printwriter os 包裝為列印...