资源简介
自己写的Linux下使用UDP协议的点对点聊天程序(含源代码),亲测可用,由于UDP的原理,不能确定对方是否上线,不保证对方收到也不能知道对方是否能收到消息
代码片段和文件信息
/*first step in udp programming*/
#include
#include
#include
#include
#include
#include
#include
#define BUFLEN 255
int main(int argcchar **argv)
{
struct sockaddr_in peeraddrlocaladdr;
int sockfd;
char recmsg[BUFLEN+1]pushmsg[BUFLEN+1];
int socklenn;
if(argc!=5){
printf(“%s \n“argv[0]);
exit(0);
}
sockfd=socket(AF_INETSOCK_DGRAM0);
if(sockfd<0){
fprintf(stderr“socket creating error in udptalk.c!\n“);
exit(1);
}
socklen=sizeof(struct sockaddr);
memset(&peeraddr0socklen);
peeraddr.sin_family=AF_INET;
peeraddr.sin_port=htons(atoi(argv[2]));
if(inet_pton(AF_INETargv[1]&peeraddr.sin_addr)<=0){
printf(“Wrong dest IP address!\n“);
exit(0); }
memset(&localaddr0socklen);
localaddr.sin_family=AF_INET;
localaddr.sin_port=htons(atoi(argv[4]));
if(inet_pton(AF_INETargv[3]&localaddr.sin_addr)<=0){
printf(“Wrong source IP address!\n“);
exit(0);
}
if(bind(sockfd(struct sockaddr *)(&localaddr)socklen)<0){
fprintf(stderr“bind local address error in udptalk.c!\n“);
exit(2);
}
fcntl(0F_SETFL O_NONBLOCK);
printf(“: “);
for(;;){
pushmsg[0]=0;
if(fgets(pushmsgBUFLENstdin)==“EOF“)exit(0);
if(pushmsg[0]!=0)if(sendto(sockfdpushmsgstrlen(pushmsg)0(struct sockaddr *)(&peeraddr)socklen)<0){
fprintf(stderr“sendto error in udptalk.c!\n“);
perror(““);
exit(3);
}else printf(“: “);
n=recvfrom(sockfdrecmsgBUFLENMSG_DONTWAIT(struct sockaddr *)(&peeraddr)(socklen_t*)&socklen);
if(n<0){
//fprintf(stderr“recvfrom error in udptalk.c\n“);
//perror(““);
//exit(4);
}
else{
recmsg[n]=0;
printf(“\n%s#%d>>>: %s: “inet_ntoa(peeraddr.sin_addr)ntohs(peeraddr.sin_port)recmsg);
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 220 2013-06-09 13:01 #V1.00R130608-130609Linux UDP Talk(talk)\README.txt
文件 220 2013-06-09 13:01 #V1.00R130608-130609Linux UDP Talk(talk)\README.txt~
文件 10244 2013-06-09 12:45 #V1.00R130608-130609Linux UDP Talk(talk)\talk
文件 2086 2013-06-09 12:45 #V1.00R130608-130609Linux UDP Talk(talk)\talk.cpp
目录 0 2013-06-09 13:01 #V1.00R130608-130609Linux UDP Talk(talk)
----------- --------- ---------- ----- ----
12770 5
相关资源
- Linux系统自动不停重启并计数的shell脚
- TCP/UDP/ICMP数据包攻击软件
- ov9650摄像头在qt中的实现代码
- 将游戏手柄按键映射到键盘
- QQ聊天记录查看器5.3.rar
- linux下tuxedo服务器安装与配置
- 华清远见uboot和linux内核移植实验手册
- linux外文翻译内含中英文
- 暴包括51,stm32,LINUXs三种和美的空调
- 基于Linux的模拟进程调度算法
- GCC中文手册 中国linux论坛man手册翻译
- centos7 linux 获取各个网口速率 占用率
- TCP UDP socket调试工具
- linux内存管理实验报告
- Linux下在shell脚本中设置锁的命令
- 基于Linux网络聊天室的设计
- linux C 多线程编程典型
- 基于linux和gtk的mp3播放器
- linux 系统cpu、内存、IO等监控脚本
- linux Qt局域网聊天
- 2018马哥教育Linux老王云计算视频
- 嵌入式Linux设备驱动开发笔记--赖永诚
- 基于comet4j的简易聊天
- linux下的设计QT计算器
- 计算机网络课程设计-发送TCP数据包
- h323plus音视频聊天Demo
- linux多线程程序实验,用不同线程完成
- Linux下的DLNA播放器源码
- linux下bmp图像显示
- linux命令简体中文帮助文档支持检索
评论
共有 条评论