资源简介
自己写的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
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- 使用选择性重传协议实现UDP可靠通信
- Linux任务管理器
- linux应用层的华容道游戏源代码
- 通信软件的具体实例──基于Socket的
- 用VC 编写的仿QQ聊天室程序源代码
- Qt局域网聊天软件
- websocket实现一对一聊天
- ubuntu9.10 可加载内核模块和字符设备驱
- QT局域网聊天系统(基于QT5.修改过)
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- 网络(UDP)转串口程序
- linux下用多进程同步方法解决生产者
- 基于swing的简单聊天器(兼传输文件)
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
评论
共有 条评论