浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com 页 1
在 C 语言中实现 Socket 编程
tcpsrv.c的内容如下:
#include
#include
#define RECEIVE_MAX_LENGTH 100
#define SEND_MAX_LENGTH 100
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1
|| HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET socksrv = socket(AF_INET,SOCK_STREAM,0);//监听的套接字
SOCKADDR_IN socketadd;
socketadd.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
socketadd.sin_family = AF_INET;
socketadd.sin_port = htons(7001);
if( SOCKET_ERROR == bind(socksrv,(SOCKADDR*)&socketadd,sizeof(SOCKADDR)) )
{
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com 页 2
printf("bind err\n");
return;
}
if( SOCKET_ERROR == listen(socksrv,5) )
{
printf("listen err");
return;
}
SOCKADDR_IN sockclient;
int len = sizeof(SOCKADDR);
while(1)
{
SOCKET sockconn = accept(socksrv,(SOCKADDR*)&sockclient,&len);//建
立连接的套节字
if(INVALID_SOCKET == sockconn )
{
printf("acc err\n");
return;
}
char sendData[SEND_MAX_LENGTH];
//scanf("%s",sendData);
//strcpy(sendData, "hello client, i\'m server");
sprintf(sendData,"%s","hello client, i\'m server");
if( SOCKET_ERROR == send(sockconn,sendData,strlen(sendData)+1,0) )
{
printf("send err\n");
return;
}
char getData[RECEIVE_MAX_LENGTH];
recv(sockconn,getData,RECEIVE_MAX_LENGTH,0);
printf("%s\n",getData);
closesocket(sockconn);
}
}
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com 页 3
tcpclient.c 的内容如下:
#include
#include
#define RECEIVE_MAX_LENGTH 100
#define SEND_MAX_LENGTH 100
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1
|| HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET socketClient = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN clientadd;
clientadd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
clientadd.sin_family = AF_INET;
clientadd.sin_port = htons(7001);
if( SOCKET_ERROR ==
connect(socketClient,(SOCKADDR*)&clientadd,sizeof(SOCKADDR)) )
{
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com
浪曦网-国内顶级 IT 视频网络编程教育平台 Www.LangSin.Com 页 4
printf("con err\n");
return;
}
char getData[RECEIVE_MAX_LENGTH];
if(recv(socketClient,getData,RECEIVE_MAX_LENGTH,0) == SOCKET_ERROR)
{
printf("recv err\n");
return;
}
else
{
printf("%s\n",getData);
}
char sendData[SEND_MAX_LENGTH];
//scanf("%s",sendData);
strcpy(sendData, "hello server, i\'m client");
//sprintf(sendData,"%s","hello server, i\'m client");
send(socketClient,sendData,sizeof(sendData)+1,0);
closesocket(socketClient);
WSACleanup();
}
必须先运行服务端程序,再运行客户端程序!
本文档为【如何在C语言中实现Socket编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。