基于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();
}
在基于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();
}
相关文章推荐
- 基于udp的协议的 socket编程小例子
- linux网络编程之socket(十四):基于UDP协议的网络程序
- 网络编程(6)—— 基于Windws系统的UDP协议socket服务器和客户端
- socket编程 -- 基于UDP协议的C/S通信模型及实现
- linux网络编程之socket(十四):基于UDP协议的网络程序
- linux网络编程之socket(十四):基于UDP协议的网络程序
- linux网络编程之socket(十四):基于UDP协议的网络程序
- 基于 TCP (面向连接)和无连接UDP协议的 socket 套接字编程
- 基于UDP协议之——socket编程
- Socket网络程序设计(2) ———— 基于UDP协议的客户-服务器socket实例
- 3.Socket网络编程之基于UDP协议的Socket(图解与源码)
- 客户咨询<基于UDP协议的Socket编程(数据报式套接字)>
- 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程
- 网络编程(5)—— 基于Linux系统的UDP协议socket服务器和客户端
- 基于Tcp&UDP协议的简单Socket通信实例(JAVA)
- 基于UDP协议的网络编程(使用DatagramSocket发送接收数据)
- 基于TCP/IP和UDP协议的socket编程结构解析
- 基于TCP/IP协议及UDP协议的socket编程
- 14.基于UDP协议的socket编程(1)
- linux网络编程之socket(十四):基于UDP协议的网络程序