WinSocket聊天程式例項(多執行緒)

2022-09-01 07:33:09 字數 1769 閱讀 4299

1

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

2 #include 3 #include 4 socket socksrv;//

連線所用套節字

5 socket sockconn; //

監聽套接字

6sockaddr_in addrsrv;

7dword winapi funa(lpvoid lp);8//

定義傳送和接收的快取陣列

9char sendbuf[50

];10

char recvbuf[50

];11

12void

main()

2930

if(lobyte(wsadata.wversion)!=1||hibyte(wsadata.wversion)!=1

)34 printf("

伺服器已啟動......\n");

3536

//建立socket套接字

37 socksrv = socket(af_inet,sock_stream,0

);38

//通訊的ip位址 htonl把主機位元組轉換成網路位元組

39 addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);

40//

使用ip位址族

41 addrsrv.sin_family=af_inet;

42//

通訊的埠號

43 addrsrv.sin_port=htons(8888

);44

//函式繫結 將套接字與通訊位址建立聯絡

45 bind(socksrv,(sockaddr*)&addrsrv,sizeof

(sockaddr));

46//

建立監聽佇列(把套接字轉換成監聽模式)

47 listen(socksrv,5

);48

int len=sizeof

(sockaddr);

4950

//accept接受客戶請求

51 sockconn = accept(socksrv,(sockaddr*)&addrsrv,&len);

5253 sprintf(sendbuf,"

伺服器ip: %s ;連線成功!

",inet_ntoa(addrsrv.sin_addr));

54//

傳送訊息

55 send(sockconn,sendbuf,strlen(sendbuf)+1,0

);

5657

handle a;

58dword dwt;

5960

//引數1:使用預設的安全性;引數2:與呼叫執行緒一樣的棧大小;

61//

62 a=createthread(null,0,funa,0,0,&dwt);

63closehandle(a);

6465

//訊息迴圈接收和傳送

66while(1)73

closesocket(sockconn);

74//

關閉連線和套接字

75wsacleanup();76}

7778

dword winapi funa(lpvoid lp)

79else89}

90return0;

91 }

winsocket程式設計例項

include include void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 socket socksrv socket af inet,sock stream,0 sockaddr in addrsrv addrs...

winsocket程式設計例項

include include void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 socket socksrv socket af inet,sock stream,0 sockaddr in addrsrv addrs...

WinSocket程式設計(C )例項三

1 首先新建專案 win32控制台應用程式 2 解決方案 新增 新建專案,兩個專案都新增ws2 32.lib鏈結庫 1,2步驟可參考 winsocket程式設計 c 例項一 3 直接上 ient adrconv win.cpp include stdafx.h include include voi...