针对UDP套接字调用connect函数不会与对方UDP套接字建立连接,只是向UDP套接字注册目标IP和端口信息。

修改客户端代码

服务器代码不需要修改,只需修改客户端代码。调用connect函数之后,可以调用write函数和read函数来发送、接收数据,而不需要调用sendto函数和recvfrom函数。

include <cstdio>
#include <cstdlib>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>const int BUF_SIZE = 30;void error_handling(const char *message);// 接收两个参数,argv[1]为IP地址,argv[2]为端口号
int main(int argc, char *argv[]) {int sock;char message[BUF_SIZE];ssize_t str_len;struct sockaddr_in server_addr;if (argc != 3) {printf("Usage : %s <IP> <port>\n", argv[0]);exit(1);}sock = socket(PF_INET, SOCK_DGRAM, 0);if (sock == -1) {error_handling("socket() error");}// 地址信息初始化memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family = AF_INET; // IPV4 地址族server_addr.sin_addr.s_addr = inet_addr(argv[1]); // 服务器IP地址server_addr.sin_port = htons(atoi(argv[2])); // 服务器端口号while (1) {fputs("Insert message(q or Q to quit): ", stdout);fgets(message, BUF_SIZE, stdin);// 如果输入q或者Q,则退出if (!strcmp(message, "q\n") || !strcmp(message, "Q\n")) {break;}write(sock, message, strlen(message));str_len = read(sock, message, sizeof(message) - 1);message[str_len] = 0;printf("Message from server: %s", message);}close(sock);return 0;
}

项目代码

github

参考

《TCP/IP网络编程》

C++回声服务器_4-UDP connect版本客户端相关推荐

  1. C++回声服务器_6-多进程pipe版本服务器

    在服务器多进程版本的基础上,使用管道来向一个子进程发送接收到的数据,该子进程将接收到的数据保存到文件中.客户端代码不变. 服务器代码 #include <cstdio> #include ...

  2. 【SVN】windows SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  3. goudp文件传输服务器,golang udp服务端客户端例子

    服务端: package main import ( "fmt" "net" ) func main() { // 创建监听 socket, err := ne ...

  4. 基于epoll实现一个IO多路复用的回声服务器

    任务: 实现一个TCP server的回声服务器,功能是将客户端发送的消息原样返回,应用epoll处理事件循环实现IO多路复用.借此任务理解IO多路复用应用的开发模式. 参考资料: http://ma ...

  5. C++回声服务器_3-UDP版本

    这次我们实现一个UDP版本的回声服务器. 用于传输数据的函数 UDP套接字不会像TCP套接字那样保持连接状态,因此每次传输数据都要添加目标地址信息. 用于传输数据的函数: 发送数据到目标服务器. #i ...

  6. epoll边缘触发_C++回声服务器_9-epoll边缘触发模式版本服务器

    epoll默认情况下是水平触发模式,这次将epoll设置为边缘触发模式来实现服务器,而客户端直接使用完美回声服务器的客户端. 服务器代码 #include #include #include #inc ...

  7. 010.第一个回声服务器可能遇到的问题——connect函数

    目录 由connect函数使用不当导致的小错误 server.c client.c 最终效果: 新server.c:主要用于排错 在回顾connect函数: 完整博客: 由connect函数使用不当导 ...

  8. SVN版本服务器搭建(服务端+客户端)

     http://www.cnblogs.com/warrior1988/p/5359084.html 环境:Win7 32 bit SVN简介:程序员在编写程序的过程中,每个程序员都会生成很多不同 ...

  9. Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤...

    TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据.对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的.这就是为什么TCP和UDP是一个流行的Java编程面试问题. Jav ...

最新文章

  1. 深度学习之反向传播算法
  2. 使用 DES 算法对数据加密
  3. 使用主机ip地址绑定GooglAppEngine站点
  4. 《中国人工智能学会通讯》——2.31 跨环境抽象(Abstracting Across Environments)
  5. 用PowerDesigner工具条不见的
  6. 安谋科技发布新业务品牌“核芯动力”,先手布局智能计算产业
  7. 安装和卸载mysql_安装和卸载mysql
  8. 修改linevent的4096限制----更多evbuffer操作函数
  9. Java学生实训平台_基于jsp的学生实训平台-JavaEE实现学生实训平台 - java项目源码...
  10. Revit API切换三维视图
  11. Webshell 管理工具
  12. rar password recover(rar密码恢复工具) v2.0.0.0
  13. 欧拉工程第12题 第一个拥有超过500个约数的三角形数是多少
  14. JavaGui 02 Pannel-面板
  15. 微软让草稿几秒钟变App,还推出了个像Mac Mini的迷你台式机 | Build 2022
  16. pytorch-gradual-warmup-lr安装
  17. x86服务器与arm服务器
  18. bootstrap——完美的分页查询
  19. jays+android耳机,享受HiFi音质 Jays推出新款入耳式耳塞
  20. 【网络协议趣谈】HTTPS协议加密证书和工作模式

热门文章

  1. MDK寄存器地址映射分析
  2. Collection 和 Collections区别
  3. 培训师 每小时多少钱_每个产品设计师需要了解的品牌知识
  4. cv::mat 颜色空间_网站设计基础:负空间
  5. thread线程栈size及局部变量最大可分配size【转】
  6. 程序员怎样成为一名架构师?
  7. django中怎样生成非HTML格式的内容。
  8. Why Apache Spark is a Crossover Hit for Data Scientists [FWD]
  9. 使用ndk standalone工具链来编译某个平台下的库
  10. Set函数、Get函数、点语法和类方法