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();
连接服务器
的资料。


发布评论