udp connect作用

一: 虚表存储地方,数据段吧。data segment

二: udp的connect与不用connect区别:

1,指定了对端地址,只能往绑定 的地址发送消息

2,内核也只会接收绑定的对端地址为来源的数据

3,发生异步错误的时候会上报给该进程

三:connect连接如何不阻塞

     设置套接字为非阻塞,发起连接,之后用select判断

四:stl中区间赋值的效率比单个赋值效率快很多,而且代码可读性高。

eg:       vi.assign(begin,end);

            vi.insert(...)

   

### 使用UDP协议进行Socket编程 在Linux/Unix平台上,可以利用C语言编写简单的UDP回显服务器和客户端程序。由于UDP套接字不同于TCP套接字,在多个方面存在差异,最重要的是UDP不是面向连接的[^1]。 对于UDP通信来说,不需要建立正式的连接过程;相反,消息可以直接发送给目标地址而无需事先握手。这意味着作为开发者不必调用`accept()`函数来处理传入连接请求,也不必通过`connect()`方法指定远程主机信息。 下面是一个基本的例子展示如何创建一个UDP服务器: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #define PORT 8080 #define BUFFER_SIZE 1024 int main() { int sockfd; char buffer[BUFFER_SIZE]; struct sockaddr_in servaddr; // 创建UDP套接字 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { perror("socket creation failed"); exit(EXIT_FAILURE); } memset(&servaddr, 0, sizeof(servaddr)); // 配置本地地址结构体 servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(PORT); // 绑定套接字到端口上 bind(sockfd, (const struct sockaddr *) &servaddr, sizeof(servaddr)); printf("Server started.\nWaiting for messages...\n"); while(1){ int n; socklen_t len; n = recvfrom(sockfd, (char *)buffer, BUFFER_SIZE, MSG_WAITALL, (struct sockaddr *) NULL, &len); buffer[n] = '\0'; printf("Received message: %s\n", buffer); sendto(sockfd, (const char *)buffer, strlen(buffer), MSG_CONFIRM, (const struct sockaddr *)NULL, len); } } ``` 此代码片段展示了怎样设置并监听来自任何IP地址的数据包,并且回送收到的信息给发送者。注意这里并没有涉及具体的客户端实现细节,因为UDP允许任意一方既充当服务端又扮演客户角色。 为了运行上述Java编写的UDP服务器实例,则可以在命令行输入如下指令完成编译与执行操作[^3]: ```bash $ javac udp_server.java && java udp_server ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值