linux c编程之UDP
来源:互联网 发布:广东网络干部学院 编辑:程序博客网 时间:2024/05/19 21:17
本文参考自 21天学通linux c编程
socket编程可参考:
socket编程:
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html
http://www.kuqin.com/networkprog/20080512/8361.html
网络字节顺序以及转换函数
http://blog.sina.com.cn/s/blog_4ad7c25401019qqb.html
1,设置套接字
2,读取套接字状态
3,UDP客户端实现
4,UDP服务器实现
1,设置套接字
2,读取套接字状态
#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>int main(){ int s; int val=1,len,i ; len= sizeof(int); if((s = socket(AF_INET,SOCK_STREAM,0))<0) //creat { perror("connect"); exit(1); } else { printf("a socket was created.\n"); printf("socket number:%d\n",s); } i=setsockopt(s,SOL_SOCKET,SO_TYPE,&val,len); //set if("i==0") { printf("set socket ok.\n."); } else { printf("set socket error.\n."); } getsockopt(100,SOL_SOCKET,SO_TYPE,&val,&len); //get perror("socket");}
3,UDP客户端实现
有些编译器报错则在使用addr时(struct sockaddr *)&addr
#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/socket.h>#define REMOTEPORT 4567#define REMOTEIP "127.0.0.1"int main(int argc,char *argv[]){ int s,len; struct sockaddr_in addr; int addr_len; char msg[256]; int i=0; if (( s= socket(AF_INET, SOCK_DGRAM, 0) )<0) //建立一个socket { perror("error"); exit(1); } else { printf("socket created .\n"); printf("socked id: %d \n",s); printf("remote ip: %s \n",REMOTEIP); printf("remote port: %d \n",REMOTEPORT); } len=sizeof(struct sockaddr_in); //长度 bzero(&addr,sizeof(addr)); addr.sin_family=AF_INET; //添加端口与地址信息 addr.sin_port=htons(REMOTEPORT); addr.sin_addr.s_addr=inet_addr(REMOTEIP); while (1) { bzero(msg,sizeof(msg)); len = read(STDIN_FILENO,msg,sizeof(msg)); sendto(s,msg,len,0,&addr,addr_len); //发送信息 printf("\nInput message: %s \n",msg); len= recvfrom (s,msg,sizeof(msg),0,&addr,&addr_len);/*这是接收到的信息。*/ printf("%d :",i); i++; printf("Received message: %s \n",msg); /*这是服务器返回的信息。*/ } }
4,UDP服务器实现
有些编译器报错则在使用addr时(struct sockaddr *)&addr
#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#define LOCALPORT 4567int main(int argc,char *argv[]){ int mysock,len; struct sockaddr_in addr; int i=0; char msg[256]; int addr_len; if (( mysock= socket(AF_INET, SOCK_DGRAM, 0) )<0) { perror("error"); exit(1); } else { printf("socket created .\n"); printf("socked id: %d \n",mysock);} addr_len=sizeof(struct sockaddr_in); bzero(&addr,sizeof(addr)); addr.sin_family=AF_INET; addr.sin_port=htons(LOCALPORT); addr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(mysock,&addr,sizeof(addr))<0) { perror("connect"); exit(1); } else { printf("bind ok.\n"); printf("local port :%d \n",LOCALPORT); } while (1) { bzero(msg,sizeof(msg)); len= recvfrom (mysock,msg,sizeof(msg),0,&addr,&addr_len);/*接收到信息*/ printf("%d :",i); i++; printf("message from : %s \n",inet_ntoa(addr.sin_addr)); printf(" message length : %d \n",len); printf(" message : %s \n\n",msg); sendto(mysock,msg,len,0,&addr,addr_len); /*以上将字符串返回给客户端*/ } }
- linux c编程之UDP
- 【Linux】Linux C socket 编程之UDP
- Linux C socket编程之UDP
- linux下c编程之UDP
- linux c编程 UDP
- linux-c udp编程注意事项
- linux之UDP网络编程
- Linux 网络编程之UDP
- Linux 编程之 【socket】 udp
- Linux网络编程之UDP
- linux网络编程之UDP
- linux网络编程之UDP
- Linux之UDP SOCKET 编程
- Linux网络编程之UDP
- linux网络编程之UDP编程
- Linux C高级编程——网络编程之UDP(4)
- linux c编程 UDP实例二
- [Linux C编程]UDP网络通信
- ubuntu 12.04 64 jdk
- hdu 4472 count
- 项目后的感想
- [C++]数据结构:跳表SkipList的实现与使用
- ArcGIS 10.1 for Desktop新特性 之 搜索
- linux c编程之UDP
- 导入导出用户数据
- 调试网络程序
- [汇编]产生随机数
- hdu 1505&1506&2870&2830
- ubuntu+eclipse+sdcc 搭建C51开发环境
- BIM(biologically inspired model)小结
- TFTP 配置和使用
- v4l2采集视频 framebuffer显示 左上角显示logo