C++回声服务器_4-UDP connect版本客户端
针对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版本客户端相关推荐
- C++回声服务器_6-多进程pipe版本服务器
在服务器多进程版本的基础上,使用管道来向一个子进程发送接收到的数据,该子进程将接收到的数据保存到文件中.客户端代码不变. 服务器代码 #include <cstdio> #include ...
- 【SVN】windows SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)
介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...
- goudp文件传输服务器,golang udp服务端客户端例子
服务端: package main import ( "fmt" "net" ) func main() { // 创建监听 socket, err := ne ...
- 基于epoll实现一个IO多路复用的回声服务器
任务: 实现一个TCP server的回声服务器,功能是将客户端发送的消息原样返回,应用epoll处理事件循环实现IO多路复用.借此任务理解IO多路复用应用的开发模式. 参考资料: http://ma ...
- C++回声服务器_3-UDP版本
这次我们实现一个UDP版本的回声服务器. 用于传输数据的函数 UDP套接字不会像TCP套接字那样保持连接状态,因此每次传输数据都要添加目标地址信息. 用于传输数据的函数: 发送数据到目标服务器. #i ...
- epoll边缘触发_C++回声服务器_9-epoll边缘触发模式版本服务器
epoll默认情况下是水平触发模式,这次将epoll设置为边缘触发模式来实现服务器,而客户端直接使用完美回声服务器的客户端. 服务器代码 #include #include #include #inc ...
- 010.第一个回声服务器可能遇到的问题——connect函数
目录 由connect函数使用不当导致的小错误 server.c client.c 最终效果: 新server.c:主要用于排错 在回顾connect函数: 完整博客: 由connect函数使用不当导 ...
- SVN版本服务器搭建(服务端+客户端)
http://www.cnblogs.com/warrior1988/p/5359084.html 环境:Win7 32 bit SVN简介:程序员在编写程序的过程中,每个程序员都会生成很多不同 ...
- Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤...
TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据.对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的.这就是为什么TCP和UDP是一个流行的Java编程面试问题. Jav ...
最新文章
- 深度学习之反向传播算法
- 使用 DES 算法对数据加密
- 使用主机ip地址绑定GooglAppEngine站点
- 《中国人工智能学会通讯》——2.31 跨环境抽象(Abstracting Across Environments)
- 用PowerDesigner工具条不见的
- 安谋科技发布新业务品牌“核芯动力”,先手布局智能计算产业
- 安装和卸载mysql_安装和卸载mysql
- 修改linevent的4096限制----更多evbuffer操作函数
- Java学生实训平台_基于jsp的学生实训平台-JavaEE实现学生实训平台 - java项目源码...
- Revit API切换三维视图
- Webshell 管理工具
- rar password recover(rar密码恢复工具) v2.0.0.0
- 欧拉工程第12题 第一个拥有超过500个约数的三角形数是多少
- JavaGui 02 Pannel-面板
- 微软让草稿几秒钟变App,还推出了个像Mac Mini的迷你台式机 | Build 2022
- pytorch-gradual-warmup-lr安装
- x86服务器与arm服务器
- bootstrap——完美的分页查询
- jays+android耳机,享受HiFi音质 Jays推出新款入耳式耳塞
- 【网络协议趣谈】HTTPS协议加密证书和工作模式
热门文章
- MDK寄存器地址映射分析
- Collection 和 Collections区别
- 培训师 每小时多少钱_每个产品设计师需要了解的品牌知识
- cv::mat 颜色空间_网站设计基础:负空间
- thread线程栈size及局部变量最大可分配size【转】
- 程序员怎样成为一名架构师?
- django中怎样生成非HTML格式的内容。
- Why Apache Spark is a Crossover Hit for Data Scientists [FWD]
- 使用ndk standalone工具链来编译某个平台下的库
- Set函数、Get函数、点语法和类方法