天天看點

[VC]vc中socket程式設計步驟

sockets(套接字)程式設計有三種,流式套接字(SOCK_STREAM),資料報套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);

基于TCP的socket程式設計是采用的流式套接字。在這個程式中,将兩個工程添加到一個工作區。要連結一個ws2_32.lib的庫檔案。

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

1:加載套接字庫,建立套接字(WSAStartup()/socket());

2:綁定套接字到一個IP位址和一個端口上(bind());

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

4:請求到來後,接受連接配接請求,傳回一個新的對應于此次連接配接的套接字(accept());

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

6:傳回,等待另一連接配接請求;

7:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。

伺服器端代碼如下:

[VC]vc中socket程式設計步驟

#include

<stdio.h>

[VC]vc中socket程式設計步驟

<Winsock2.h>

[VC]vc中socket程式設計步驟

void

main()

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

{

[VC]vc中socket程式設計步驟

WORD wVersionRequested;

[VC]vc中socket程式設計步驟

WSADATA wsaData;

[VC]vc中socket程式設計步驟

int err;

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

wVersionRequested = MAKEWORD( 1, 1 );

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

err = WSAStartup( wVersionRequested, &wsaData );

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

if ( err != 0 )

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

  return;

[VC]vc中socket程式設計步驟

}

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

if ( LOBYTE( wsaData.wVersion ) != 1 ||

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

HIBYTE( wsaData.wVersion ) != 1 )

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

WSACleanup( );

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

SOCKADDR_IN addrSrv;

[VC]vc中socket程式設計步驟

addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

[VC]vc中socket程式設計步驟

addrSrv.sin_family=AF_INET;

[VC]vc中socket程式設計步驟

addrSrv.sin_port=htons(6000);

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

listen(sockSrv,5);

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

SOCKADDR_IN addrClient;

[VC]vc中socket程式設計步驟

int len=sizeof(SOCKADDR);

[VC]vc中socket程式設計步驟

while(1)

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

SOCKET

sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

[VC]vc中socket程式設計步驟

  char

sendBuf[50];

[VC]vc中socket程式設計步驟

sprintf(sendBuf,"Welcome %s to

here!",inet_ntoa(addrClient.sin_addr));

[VC]vc中socket程式設計步驟

send(sockConn,sendBuf,strlen(sendBuf)+1,0);

[VC]vc中socket程式設計步驟

recvBuf[50];

[VC]vc中socket程式設計步驟

recv(sockConn,recvBuf,50,0);

[VC]vc中socket程式設計步驟

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

[VC]vc中socket程式設計步驟

closesocket(sockConn);

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

}用戶端程式設計的步驟:

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

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

4:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。

用戶端的代碼如下:

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

[VC]vc中socket程式設計步驟

send(sockClient,"hello",strlen("hello")+1,0);

[VC]vc中socket程式設計步驟

char recvBuf[50];

[VC]vc中socket程式設計步驟

recv(sockClient,recvBuf,50,0);

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟

closesocket(sockClient);

[VC]vc中socket程式設計步驟

WSACleanup();

[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟
[VC]vc中socket程式設計步驟