windows 下socket 程式設計

2021-06-21 13:48:00 字數 3554 閱讀 1646

111111windows 下用microsoft visual studio 2005 編寫socket程式

windows 下實現同步socket程式設計,和linux下有許多相同的地方,基本的socket流程完全相同,所有的socket

相關的函式都在 winsock.h 中宣告;還有windows下socket程式設計要鏈結乙個ws2_32.lib的庫檔案。

加入#pragma comment (lib,"ws2_32.lib") ,且在程式中將庫要初始化;

tcp server 程式設計步驟;

伺服器端程式設計的步驟:

1:載入套接字型檔,建立套接字(wsastartup()/socket());

3:將套接字設定為監聽模式等待連線請求(listen());

4:請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字(accept());

5:用返回的套接字和客戶端進行通訊(send()/recv());

6:返回,等待另一連線請求;

7:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。

server端程式如下:

#include

//#include

#include

#include

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

using namespace std;

void main()

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

hibyte( wsadata.wversion ) != 1 )

socket socksrv=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

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

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

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

listen(socksrv,5);

sockaddr_in addrclient;

int len=sizeof(sockaddr);

while(1)

closesocket(sockconn);

}getchar();

}2222

tcp客戶端程式設計的步驟:

1:載入套接字型檔,建立套接字(wsastartup()/socket());

2:向伺服器發出連線請求(connect());

3:和伺服器端進行通訊(send()/recv());

4:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。

tcp client端程式:

#include

#include

#include

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

using namespace std;

void main()

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

hibyte( wsadata.wversion ) != 1 )

socket sockclient=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("192.168.1.123");

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));

send(sockclient,"hello eric",strlen("hello eric")+1,0);

char buf[50];

recv(sockclient,buf,50,0);

printf("%s\n",buf);

while(1)

udp server端程式

#include

#include

#include

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

using namespace std;

class udp_server

;udp_server::udp_server()

int udp_server::udp_server_init()

if ( lobyte( wsadata.wversion ) != 1 ||   //if the version is not matched ,then quit and terminate the ws3_32.dll

hibyte( wsadata.wversion ) != 1 )

socksrv=socket(af_inet,sock_dgram,0);

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

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

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

len=sizeof(sockaddr);

}void main()

;sock.udp_server_init();

while(1)

getchar();

}udp client端程式:

#include

#include

#include

#include

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

using namespace std;

void main()

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

hibyte( wsadata.wversion ) != 1 )

socket sockclient=socket(af_inet,sock_dgram,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

while(1)

{sendto(sockclient,"hello",strlen("hello")+1,0,

(sockaddr*)&addrsrv,sizeof(sockaddr));

cout<<"send one massage successfully"<

windows下搭建python cgi程式設計環境

順便把實習做的專案從unix系統轉到windows下面來了。安裝python,搭建機器學習開發環境前面的部落格提過了,不寫了。2 配置apache引數 修改配置檔案 conf httpd.conf,搜尋 options indexes followsymlinks,改為options indexes...

Windows下Socket程式設計

監聽listen 接收accept 傳送send tcp sendto udp 接收recv tcp recvfrom udp 連線connect 載入庫資源 wsastartup 建立socket socket 繫結位址資訊 bind 監聽 listen 獲取監聽佇列第乙個連線處理 accept ...

Windows和Linux下socket的區別

1.標頭檔案 windows下winsock.h或winsock2.h linux下netinet in.h 大部分都在這兒 unistd.h close函式在這兒 sys socket.h 在in.h裡已經包含了,可以省了 2.初始化 windows下需要用wsastartup啟動ws2 32.l...