套接字编程实例套接字编程实例.doc
文本预览下载声明
原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang
1.?????? SOCKET编程流程如下
面向有连接的套接字编程
服务器:
1)? socket)
2)? bind)
3)? listen)
4)? accept)
5)? send/recv);
6)?
7)?
客户端:
1)? socket)
2)? connect)
3)? send/recv)
4)?
面向无连接的套接字编程
服务器:(接收端)
1)?????? 创建套接字(socket)
2)?????? 将套接字绑定到一个本地地址和端口上(bind)
3)?????? 用返回的套接字和客户端进行通信(recvfrom);
4)?????? 关闭套接字
客户端:(发送端)
1)? socket)
2)? sendto
3)?
例如:面向有连接的套接字编程
首先在工程-(设置(link 在对象库模板最后面再加上ws2_32.lib客户端:
#includeWinsock2.h
#includestdio.h
int main()
{
//第一步:加载socket库函数
//**********************************************************
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
//**********************************************************
//第一步,创建套接字
SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0) ;
//定义套接字地址
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1); //获取服务器IP地址,inet_addr()将IP地址转为点分十进制的格式
addrSrv.sin_family = AF_INET;
//sin_family 表示地址族,对于IP地址,sin_family成员将一直是AF_INET
addrSrv.sin_port = htons(1234);
//连接服务器
// connect(sockClient,(SOCKADDR*)addrSrv,sizeof(SOCKADDR));
if(connect(sockClient,(SOCKADDR*)addrSrv,sizeof(SOCKADDR))!=0)
{
//MessageBox(连接失败);
//return;
printf(error);
return 0;
}else
{
printf(success);
}
char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf(客户端接收到的数据:%s,recvBuf);
send(sockClient,client send ,strlen(client send )+1,0);
//关闭套接字
closesocket(sockClient);
//清除套接字资源
WSACleanup();
return 0;
}
?
?
服务器端:
#includeWinsock2.h
#includestdio.h
int main()
{
//第一步:加载socket库函数
//**********************************************************
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1
显示全部