Socket UDP编程
2010年10月25日
Socket UDP编程
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收发送数据,用函数recvfrom()、sendto();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置对方的IP地址和端口等属性;
3、连接服务器,用函数connect();
若是只是一次发送、接收数据,此函数可不用;
若是循环发送接收,则此处要用connect函数;因为若不用,当sendto()后这时服务器器kill掉,则 client端阻塞在recvfrom处;
4、循环发送接收数据,用函数sendto()、recvfrom();
5、关闭网络连接;
例子:
1、服务器:
SOCKADDR_IN sockAddr;
SocketClose(m_socketId);
//m_socketId = socket (AF_INET, SOCK_STREAM, 0);
m_socketId = socket (AF_INET, SOCK_DGRAM, 0);
if(INVALID_SOCKET == m_socketId)
{
return -1;
}
memset(&sockAddr,0,sizeof(sockAddr));
sockAddr.sin_family = AF_INET;
if (strIp == NULL)
{
//列举ip
}
else
{
//将常用的用点分开的IP地址转换为unsigned long类型的IP地址
int lResult = inet_addr(strIp);
if (lResult == INADDR_NONE)
{
return -2;
}
sockAddr.sin_addr.s_addr = lResult;
}
sockAddr.sin_port = htons((u_short)nPort);
if(bind(m_socketId, (SOCKADDR* )&sockAddr, sizeof(sockAddr)))
{
return -3;
}
struct sockaddr_in cliaddr;
socklen_t src_len;
short len;
char clientdata[255];
char serverdata[65535];
int iret;
//客户端数据接收
memset(clientdata,0,sizeof(clientdata));
src_len = sizeof(cliaddr);
iret = recvfrom(m_socketId, clientdata, sizeof(clientdata), 0, (struct sockaddr *)&cliaddr, &src_len);
if(iret
#include
#include
#include
#include "parainput.h"
#include
int main(int argc, char **argv)
{
int sockfd;
socklen_t src_len;
socklen_t len;
struct sockaddr_in dest_addr;
char send_msg[SOCKET_BLOCK], rece_msg[SOCKET_BLOCK];
int send_msg_len;
int iret,i;
//输入参数处理
if (g_pParaInput.parainput(argc,argv)) return 0;
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1)
{
perror("socket creat failed!\n");
exit(1);
}
bzero(&dest_addr, sizeof(dest_addr));
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(g_pParaInput.serverport);
if(inet_aton(g_pParaInput.serveradd, &dest_addr.sin_addr) < 0)
{
printf("[%s] is not a valid IPaddress\n", g_pParaInput.serveradd);
exit(1);
}
if (connect(sockfd,(struct sockaddr *)&dest_addr,sizeof(dest_addr))<0)
{
printf("Connect error\n");
shutdown(sockfd,2);
close(sockfd);
exit(1);
}
while(1)
{
sleep(30);
for(i=1;i<=8;i++)
{
memset(send_msg,0,sizeof(send_msg));
send_msg_len = 3;
memcpy(send_msg,&send_msg_len,2);
sprintf(send_msg+2,"%c",i);
printf("send_msg:[%02x %02x %02x]\n",send_msg[0],send_msg[1],send_msg[2]);
if(sendto(sockfd, send_msg, send_msg_len, 0, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr_in)) < 0)
{
perror("sendto error!\n");
break;;
exit(1);
}
src_len = sizeof(dest_addr);
memset(rece_msg,0,sizeof(rece_msg));
iret = recvfrom(sockfd, rece_msg, sizeof(rece_msg), 0, (struct sockaddr *)&dest_addr, &src_len);
if(iret < 0)
{
perror("receive error!\n");
break;;
exit(0);
}
printf("%s\n",rece_msg);
}
}
shutdown(sockfd,2);
close(sockfd);
return 0;
发表评论
-
2011年五一江西萍乡武功山--绿郁葱葱的连绵高山草甸,漂亮
2012-01-20 11:55 7962011年五一江西萍乡武功山--绿郁葱葱的连绵高山草甸,漂亮 ... -
语文版七年级25课诗五首选择性赏析练习
2012-01-20 11:55 789语文版七年级25课诗五 ... -
财务管理多选
2012-01-20 11:54 779财务管理多选 2012年01 ... -
电脑出现”该内存不能为read、written ”的完全解决方案
2012-01-19 16:44 676电脑出现”该内存不能为read、written ”的完全解决方 ... -
QQ旋风下载问题
2012-01-19 16:44 447QQ旋风下载问题 2010年08月05日 -
反思记 教育终极目的
2012-01-19 16:44 525反思记 教育终极目的 2012年01月17日 用400 ... -
2011最犀利语录大全
2012-01-19 16:44 6152011最犀利语录大全 2012年01月15日 2011 ... -
一切都是那样的Fake
2012-01-19 16:44 611一切都是那样的Fake 2012 ... -
Android Socket编程
2012-01-17 06:28 636Android Socket编程 2010年10 ... -
socket实现进程间通信
2012-01-17 06:28 719socket实现进程间通信 2011年05月27日 使用 ... -
Flex中socket的使用
2012-01-17 06:28 571Flex中socket的使用 2011年01月29日 f ... -
socket 相关函数
2012-01-17 06:28 513socket 相关函数 2011年03 ... -
大声为孩子读书吧
2012-01-16 05:09 628大声为孩子读书吧 2009年11月26日 [转帖][美] ... -
世博会园区领导工作首选的数码产品--汉王电纸书
2012-01-16 05:09 723世博会园区领导工作首 ... -
txt
2012-01-16 05:09 561txt 2012年01月03日 “能说会道 XP”是一款 ... -
学好英语的22个经典要诀
2012-01-16 05:09 662学好英语的22个经典要诀 2009年12月14日 好的演 ...
相关推荐
一次.net Socket UDP编程的10万客户端测试记录.包含客户端和服务器端,需要注意的是客户端里由于电脑端口问题,测试最好分多台电脑。 http://www.cnblogs.com/keyindex/archive/2010/12/15/1901875.html
文件时简单的UDP服务器程序和UDP客户端程序的例子,这两个程序都是Win32应用程序,在本地机器上的8888端口进行通信
socket的udp编程,不会可以借鉴一下
一个Socket UDP编程的例子,包含服务器和客户端。
udp 使用socket聊天编程 多线程
Windows下基于TCP和UDP的Socket编程,分别有服务端和客户端,好用。
分别包含socket TCP 和UDP编程的实例,包括客户端和服务端。VS2015,测试通过
udp -socket编程,简单的了解linux下的socket编程流程
UDP编程,简单容易理解,基于UDP的socket编程,是短连接。
UDP Socket编程 客户端 服务端
java udp socket 网络编程
C# Socket Udp 通信服务器端(控制台应用程序),不可多的的Udp资料。本地端口10000
这是一个完整的源代码,经过测试完全通过,没有任何错误,可用于c语言综合实训课程的实践练习和参考代码。由从事教学经验的老师设计。
socket编程之udp连接代码,包括服务器代码、客户端代码
Socket网络编程(TCP和UDP),基于VS2013编译,简单的网络通信示例
socket udp 编程! 客户端 ,服务端!!
基于TCP的协议的Socket编程,介绍UDP编程的基本函数用法,word文档
本源码采用第三方类库,详细演示如何实现Udp协议的数据收发。调用接口简单,关键是底层采用了IOCP模型,效率高,比自己实现要稳定,且高效。