社区
C语言
帖子详情
c语言,udp通信,该怎么写?范例,或书都行,谢谢
betterjonah
2003-12-02 02:32:47
c语言,udp通信,该怎么写?范例,或书都行,谢谢
...全文
368
6
打赏
收藏
c语言,udp通信,该怎么写?范例,或书都行,谢谢
c语言,udp通信,该怎么写?范例,或书都行,谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
galaxy_fxstar
2003-12-02
打赏
举报
回复
socket.h是windows下也支持的,
如果用vc做的话可以用mfc的类csocket,你可以看一下msdn中关于这个类的说明,
然后再参考udp通讯的设计眶架,套用csocket中的函数就可以实现了!
lzsbj
2003-12-02
打赏
举报
回复
UDP回射服务器程序
//服务器main主程序
#include "unp.h"
Int main(int argc, char **argv)
{
int sockfd; //定义套接字
struct sockaddr_in servaddr, cliaddr; //IPv4套接口地址定义
sockfd = Socket(AF_INET, SOCK_DGRAM, 0); //建立UDP套接字
bzero(&servaddr, sizeof(servaddr)); //地址结构清零
servaddr.sin_family = AF_INET; //IPv4协议
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//内核指定地址
servaddr.sin_port = htons(SERV_PORT); //9877 端口
/*分配协议地址,绑定端口*/
Bind(sockfd, (SA *) &servaddr, sizeof(servaddr));
/* 回射子程序*/
dg_echo(sockfd, (SA *) &cliaddr, sizeof(cliaddr));
}
回射子程序:
include "unp.h"
void dg_echo(int sockfd, SA *pcliaddr, socklen_t clilen)
{
int n; //读入字节数
socklen_t len; //协议地址长度, 没有这个参数用 clilen也可以
char mesg[MAXLINE];
for ( ; ; ) {
len = clilen;
/* 读入一行 */
n = Recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);
/* 回射到对方套接口 */
Sendto(sockfd, mesg, n, 0, pcliaddr, len);
}
}
--------------------------------------------------------------------------------
UDP回射客户程序
//客户 main主程序
include "unp.h"
int main(int argc, char **argv) //命令行的第二个参数代表服务器地址
{ int sockfd; //套接字
struct sockaddr_in servaddr; //服务器地址结构
/* 必须在命令行指定服务器地址*/
if (argc != 2) err_quit("usage: udpcli <IPaddress>");
bzero(&servaddr, sizeof(servaddr)); //地址结构清零
servaddr.sin_family = AF_INET; //IPv4
servaddr.sin_port = htons(SERV_PORT); //9877端口
/*网络字节序的IP地址*/
Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
/*建立UPD套接口*/
sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
/*回射客户端子程序, stdin 为标准输入:键盘*/
dg_cli(stdin, sockfd, (SA *) &servaddr, sizeof(servaddr));
exit(0); //子程序结束后退出程序
}
//客户端回射子程序
#include "unp.h"
void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)
{
int n; //读入字节数
char sendline[MAXLINE], recvline[MAXLINE + 1]; // 1:结束标志占用
/* 从键盘读入一行 */
while (Fgets(sendline, MAXLINE, fp) != NULL) { //如果不是^D结束
/* 将读入行发送到服务器套接口*/
Sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);
/*从读入回射,读入字节数为n, 不关心从何处读入
n = Recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);
recvline[n] = 0; /* recvline字符串的结束标志*/
Fputs(recvline, stdout); //输出到标准输出:显示器
} //while循环结束:直到从键盘读入结束符^D为止
}
liao2001
2003-12-02
打赏
举报
回复
windows和unix理论相同,机制相近
windows下可以查看winsock相关资料
unix下 《UNIX环境高级编程》
别忘了在你能熟练使用它后,看看tcp/ip的原理,这一点对你以后发展大有帮助,切记!
mixtrue
2003-12-02
打赏
举报
回复
you can vist the web site
www.codeproject.com
www.vchelp.net
www.developer.com
you you post your problems to microsoft's newsgroups.
betterjonah
2003-12-02
打赏
举报
回复
windows呢
fierygnu
2003-12-02
打赏
举报
回复
《UNIX环境高级编程》
看了还不会,就可以放弃了。
300个
C语言
程序
范例
《300个
C语言
程序
范例
》是一个包含丰富
C语言
编程实践的资源集合,它不仅提供了基础的语法示例,还涵盖了网络
通信
系统、学生信息管理系统和小游戏等多个实际应用场景的程序设计。这个压缩包旨在帮助学习者深入理解和...
Linux网络编程——
UDP
网络
通信
的简单实现
通过上述步骤,
UDP
服务端和...由于
UDP
是无连接的,每次数据传输都是独立的,因此每次调用sendto和recvfrom都不需要事先建立连接。这种方式非常适合那些对延迟敏感的应用程序,但也意味着数据包可能丢失或乱序到达。
c语言
自动生成系统时间函数,使用
C语言
中的time函数获取系统时间
使用
C语言
中的time函数获取系统时间可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。其原型为:time_t time(time_t * t);如果你已经声明...
进程间
通信
IPC,管道、共享内存、消息队列、信号量原理介绍
System V IPC(Inter-Process Communication)机制是一种在Unix/Linux系统中实现进程间
通信
的机制。它提供了几种不同的
通信
方式,包括共享内存(Shared Memory)、消息队列(Message Queue)和信号量(Semaphore)等...
VC/MFC 进程间
通信
方法总结
VC/MFC 进程间
通信
方法总结 摘要随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编
写
多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的
通信
是不...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章