2024年4月28日发(作者:)

Socket

编程实验报告

一、程序代码

(

1

)服务器端

#include

#include

#pragma comment(lib, "ws2_")

void main()

{ WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) { return; }

if ( LOBYTE( on ) != 1 ||

HIBYTE( on ) != 1 )

{ WSACleanup( );return; }

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

SOCKADDR_IN addrSrv;

_addr.S_un.S_addr=htonl(INADDR_ANY); _family=AF_INET;

_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//

定端口

listen(sockSrv,SOMAXCONN); //SOMAXCONN

由系统确定请求数

SOCKADDR_IN

addrClient;//

intlen=sizeof(SOCKADDR);

while(1)

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

//

接受客户端连接

,

获取客户端的

ip

地址

charsendBuf[50];

sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(_addr));//

组合消息

连接上的客户端

ip

地址

发送出去

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

发送消息到客户端

char

recvBuf[50]; recv(sockConn,recvBuf,50,0);//

接受客户端消息

printf("%sn",recvBuf);

closesocket(sockConn);

WSACleanup();//

断开连接

(

2

)客户端代码

#include

#include

#pragma comment(lib, "ws2_")

void main()

{

WORD wVersionRequested;

WSADATA wsaData;//WSAata

用来存储系统传回的关于

WinSocket int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 )

{

return;

}

if ( LOBYTE( on ) != 1 ||HIBYTE( on ) != 1 )

{

WSACleanup( );

return;

}

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

// AF_INET ..tcp

连接 ,初始化连接与端口号

SOCKADDR_IN addrSrv; _addr.S_un.S_addr=inet_addr("127.0.0.1");

//

本机地址,服务器在本机开启

_family=AF_INET;

_port=htons(6000);//

设置端口号

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

charrecvBuf[50];

recv(sockClient,recvBuf,50,0);//

接受数据

printf("%sn",recvBuf);

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

发送数据

closesocket(sockClient);//

关闭连接

WSACleanup();

连接服务器

的资料。