博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下socket编程-UDP
阅读量:6009 次
发布时间:2019-06-20

本文共 2242 字,大约阅读时间需要 7 分钟。

下面是UDP的服务器的代码:

/* server.c */#include 
#include
#include
#include
#include
#include "wrap.h"#define MAXLINE 80#define SERV_PORT 8000int main(void){ struct sockaddr_in servaddr, cliaddr; socklen_t cliaddr_len; int sockfd; char buf[MAXLINE]; char str[INET_ADDRSTRLEN]; int i, n; sockfd = wrap_socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); wrap_bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); printf("Accepting connections ...\n"); while(1) { cliaddr_len = sizeof(cliaddr); n = recvfrom(sockfd, buf, MAXLINE, 0, (struct sockaddr *)&cliaddr, &cliaddr_len); if(n == -1) { perr_exit("recvfrom error"); } printf("received from %s at port %d\n", inet_ntop(AF_INET, &cliaddr.sin_addr, str, sizeof(str)), ntohs(cliaddr.sin_port)); for(i = 0; i < n; ++i) { buf[i] = toupper(buf[i]); } n = sendto(sockfd, buf, n, 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr)); if(n == -1) perr_exit("sendto error!"); }}

客户端代码:

/* client.c */#include 
#include
#include
#include
#include
#include "wrap.h"#define MAXLINE 80#define SERV_PORT 8000int main(int argc, char *argv[]){ struct sockaddr_in servaddr; int sockfd, n; char buf[MAXLINE]; char str[INET_ADDRSTRLEN]; socklen_t servaddr_len; sockfd = wrap_socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr); servaddr.sin_port = htons(SERV_PORT); while(fgets(buf, MAXLINE, stdin) != NULL) { n = sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&servaddr, sizeof(servaddr)); if(n == -1) perr_exit("sendto error"); n = recvfrom(sockfd, buf, MAXLINE, 0, NULL, 0); if(n == -1) perr_exit("recvfrom error"); wrap_write(STDOUT_FILENO, buf, n); } wrap_close(sockfd); return 0;}

由于server和client没有先建立连接然后通信的条件,所以server可以有并发能力。

用Ctrl+C关闭server,然后再运行server,client还能和server联系上。

转载于:https://www.cnblogs.com/stemon/p/5221602.html

你可能感兴趣的文章
ulimit用法简介
查看>>
tomcat 配置首页
查看>>
PHP工厂模式的好处
查看>>
半年拾遗
查看>>
URL加随机数的作用
查看>>
介绍dbms_registry PL/SQL程序包
查看>>
Sketchup二次开发之添加组
查看>>
判断radiobutton是否被选中
查看>>
ActionBar 笔记
查看>>
startsWith
查看>>
Deep Learning(深度学习)学习笔记整理系列之(五)
查看>>
[LeetCode] Trapping Rain Water
查看>>
DIV+CSS布局重新学习之float/margin/padding
查看>>
转:Mysql安装时出现APPLY security settings错误
查看>>
Response.Write具体介绍
查看>>
用sed删除空行
查看>>
php使用gd库将文字转换成图片(转)
查看>>
CompileGLShader
查看>>
Office WORD如何为每一页设置不同的页眉页脚
查看>>
如何使用bootstrap
查看>>