您的位置:首页 > 编程语言

基于UDP协议的socket编程实例

2009-11-30 15:07 543 查看
与上一篇文章类似,在本文中,将以打电话的例子生动活泼的解释基于UDP协议的socket编程。

在基于UDP的socket编程中。首先介绍基本的步骤:

对于服务器端的步骤如下:

1. 加载套接字库(买手机);//WSAStartup()函数

2. 绑定到本地主机和特定的端口(与某人绑定并且要让想给你打电话的人知道)//bind()

3. 接收数据(接收电话);//recvfrom()

对于客户端的步骤:

1. 加载套接字库(买手机);//WSAStartup()

2. 发送数据(不用让别人知道你的号码,就可以给特定的人打电话)给服务器//sendto()

同样一下是一个实例://另外要注意的是要加载动态链接库Ws2_32.lib.

1. 服务器端的代码:

#include <iostream.h>

#include <WINSOCK2.H>

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

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

HIBYTE( wsaData.wVersion ) != 2 ) {

WSACleanup( );

return;

}

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

char recvBuffer[100];

int len=100;

SOCKADDR_IN addrSrv;

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

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(6000);

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

recvfrom(sockSrv,recvBuffer,len,0,(SOCKADDR*)&addrSrv,&len);

cout<<recvBuffer<<endl;

closesocket(sockSrv);

WSACleanup();

}

2. 客户端的代码:

#include <iostream.h>

#include <WINSOCK2.H>

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

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

HIBYTE( wsaData.wVersion ) != 2 ) {

WSACleanup( );

return;

}

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

char sendBuffer[100];

SOCKADDR_IN addrSrv;

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

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(6000);

int len=sizeof(SOCKADDR_IN);

sendto(sockClient,"hello",sizeof("hello"),0,(SOCKADDR*)&addrSrv,len);

closesocket(sockClient);

WSACleanup();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: