乙個WinSocket的程式設計例項

2021-06-05 11:22:27 字數 1933 閱讀 2097

server:

#include #include #include #define default_port 5050 //服務端預設埠  

int main()

slisten = socket(af_inet,sock_stream,0);//建立伺服器端套介面

if(slisten == invalid_socket)

//以下建立伺服器端位址

//使用ip位址族

ser.sin_family = af_inet;

//使用htons()把雙位元組主機序埠號轉換為網路位元組序埠號

ser.sin_port = htons(iport);

//htonl()把乙個四位元組主機序ip位址轉換為網路位元組序主機位址

//使用系統指定的ip位址inaddr_any

ser.sin_addr.s_addr = htonl(inaddr_any);

//bind()函式進行套接定與位址的繫結

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

//進入監聽狀態

if(listen(slisten,5) == socket_error)

//初始化客戶位址長度引數

ilen = sizeof(cli);

//進入乙個無限迴圈,等待客戶的連線請求

while(1)

//輸出客戶ip位址和埠號

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

//給連線的客戶傳送資訊

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

if(isend == socket_error)

else if(isend == 0)

else

closesocket(saccept);

} closesocket(slisten);

wsacleanup();

return 0;

}

client:

#include #include #include #define data_buffer 1024 //預設緩衝區大小  

int main()

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

ser.sin_family = af_inet;

ser.sin_port = htons(iport);

//inet_addr()將命令列中輸入的點分ip位址轉換為二進位制表示的網路位元組序ip位址

ser.sin_addr.s_addr = inet_addr("127.0.0.1");

//建立客戶端流式套介面

sclient = socket(af_inet,sock_stream,0);

if(sclient == invalid_socket)

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

if(connect(sclient,(struct sockaddr *)&ser,sizeof(ser)) == invalid_socket)

else

else

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

} closesocket(sclient);

wsacleanup();

return 0;

}

在除錯過程,要把ws2_32.lib 庫檔案包含到工程中

WinSocket程式設計筆記(一)

前言 注 以下 都以c 環境為例 一.windows socket 基礎 windows socket dll的初始化和釋放函式的呼叫方法 windows socket 網路程式設計思路 1.初始化 windows socket 2.建立socket 3.將socket與位址結構繫結 4.傳送 接收...

winsocket 的最簡單的乙個例子

執行這個伺服器,並在它執行的時候使用telnet來連線機器的20248埠。如果你是在同一臺機器上使用,那麼就連線到localhost。示例輸出 我們將會在伺服器上看到這樣的輸出 e work server debug server press escape to terminate program ...

oracle record table 乙個例項

感覺不錯的例項,記錄一下 set serveroutput on declare type company is record companyid varchar2 10 companyname varchar2 300 address varchar2 300 legalrepresentativ...