这里练习用数据报套接字来通讯

listener.c

// 数据报套接字服务器(listener.c):在指定端口监听,收到数据报后关闭连接
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#define MYPORT 5000
#define MAXBUFLEN 100
int main(int argc, char *argv[])
{
int sock_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int addr_len, numbytes;
char buf[MAXBUFLEN];
if((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
perror("socket");
return 1;
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MYPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;  // 自动设置为自己的IP
bzero(&(my_addr.sin_zero), 8);          // 将结构的其余空间清零
if(bind(sock_fd, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)) == -1)
{
perror("bind");
return 1;
}
addr_len = sizeof(struct sockaddr);
if((numbytes = recvfrom(sock_fd, buf, MAXBUFLEN, 0, (struct sockaddr*)&their_addr, &addr_len)) == -1)
{
perror("recvfrom");
return 1;
}
close(sock_fd);
printf("got packet from %s\n", inet_ntoa(their_addr.sin_addr));
printf("packet is %d bytes long\n", numbytes);
buf[numbytes] = 0;
printf("packet contains [%s]\n", buf);
return 0;
}

talker.c

// 数据报套接字客户端(talker.c):向指定端口发送数据后关闭连接
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MYPORT 5000
int main(int argc, char *argv[])
{
int sock_fd, numbytes;
struct sockaddr_in their_addr;
struct hostent *he;
if(argc < 3)
{
fprintf(stderr, "Usage: %s <hostname> <message>\n", argv[0]);
return 1;
}
if((he = gethostbyname(argv[1])) == NULL)
{
herror("gethostbyname");
return 1;
}
if((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
perror("socket");
return 1;
}
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(MYPORT);
their_addr.sin_addr = *((struct in_addr*)he->h_addr);
bzero(&(their_addr.sin_zero), 8);
if((numbytes = sendto(sock_fd, argv[2], strlen(argv[2]), 0, (struct sockaddr*)&their_addr, sizeof(struct sockaddr))) == -1)
{
perror("sendto");
return 1;
}
close(sock_fd);
printf("sent %d bytes to %s\n", numbytes, inet_ntoa(their_addr.sin_addr));
return 0;
}

数据报套接字服务端和客户端相关推荐

  1. Python+socket实现TCP套接字服务端自由限速

    好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...

  2. 【网络编程】Socket套接字;UDP数据报套接字编程;TCP流套接字编程

    文章目录 1. 什么是网络编程 2. 网络编程中的基本概念 3. Socket套接字 4 UDP数据报套接字编程 4.1 客户端服务器交互流程 4.2 UDP版本的回显服务 4.3 英译汉服务 5. ...

  3. 分享一套golang实现的 IM 系统,一键部署服务端,客户端SDK全平台支持,可以替代IM云服务

    开篇 自互联网诞生以来,即时通讯平台就一直存在.从世界范围来看,WhatsApp.Facebook. 微信.Telegram是领先的消息平台,用户主要使用这些平台与家人和朋友保持联系.随着互联网的发展 ...

  4. OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现

    1.网络以覆盖范围划分:局域网/城域网/广域网   互联网/因特网   以太网/令牌环网--组网方式 2.在网络中必须能够为一表示每一台主机,才能实现点到点的精确通信            IP地址: ...

  5. 网络编程【UDP数据报套接字编程】

    目录 1.网络编程基础 1.1 为什么需要网络编程? 1.2 什么是网络编程 1.3 网络编程中的基本概念 2.Socket套接字 2.1 分类 3.UDP数据报套接字编程 3.1 DatagramS ...

  6. TCP协议服务端与客户端

    一.TCP/IP协议简介 什么是TCP/IP TCP/IP协议是一种用于因特网的通信协议.TCP指传输控制协议(Transmission Control Protocol),IP指网际协议(Inter ...

  7. 无连接应用程序丢包率测试/UDP丢包率测试【基于数据报套接字的网络程序设计】

    目录 一.无连接应用程序丢包率测试 二.UDP 丢包率测试服务端 三.UDP丢包率测试客户端 四.用户使用说明(输入 / 输出规定) 五.部分运行结果 六.UDP 丢包率的测试结果分析 (1)讨论服务 ...

  8. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

  9. 使用C++的Socket实现从客户端到服务端,服务端到客户端传输文件

    使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...

最新文章

  1. Java项目:药品管理系统(java+swing+Gui+mysql)
  2. excel函数大全_让你的EXCEL工作效率翻倍的函数大全
  3. 基于eclipse swt做java浏览器内嵌等功能
  4. java调用kafka
  5. Java数据库篇4——表的约束
  6. 测试开发之缺陷报告下篇
  7. swagger : Could not resolve reference because of: Could not resolve pointer
  8. ubuntu 安装php 扩展和查看扩展包
  9. 2020年数模美赛参赛心得总结
  10. 极光 MPush 资料
  11. CSS学习13:表格样式
  12. APT(Android Performance Testing Tools)安卓平台高效性能测试工具
  13. Java实现经纬度格式转化
  14. 前端架构师的YY定义
  15. Vben Admin 安装依赖l 安装报错:Error: command failed: c: \WINDOWS\system32\cmd.exe /s /c autoreconf -ify 解决办法
  16. 如何用漏斗模型进行数据分析
  17. 外卖订单量预测异常报警模型实践
  18. [机器学习实战] 深度学习为黑白图像着彩色
  19. 微信小程序毕业设计论文求职招聘|兼职管理系统+后台管理项目源代码
  20. bzoj1143[CTSC2008]祭祀river

热门文章

  1. SPS用户管理的问题
  2. python3openpyxl无法打开文件_Python3 处理excel文件(openpyxl库)
  3. android webView的缓存机制和资源预加载
  4. 深入理解HTTP协议
  5. 662. 二叉树最大宽度
  6. leetcode 399. 除法求值(bfs)
  7. leetcode 530. 二叉搜索树的最小绝对差(中序遍历)
  8. 破解系统设计访谈:Twitter软件工程师的提示
  9. 为什么虚拟助手的前途一片光明
  10. 工具_HBuilder使用快捷方式