UDP调用connect函数
UDP是无连接的,在发送数据时需要指定对端的IP地址和端口,每次发送数据需要重新连接(多次发数据导致效率低下),而且异步错误不会返回到UDP套接字。这些在UDP调用connect函数之后都发生了改变。代码如下:
服务端:
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <stdarg.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#define MAXLINE 4096int main(int argc ,char *argv[])
{int sockfd,loop=1,ret;struct sockaddr_in seraddr;bzero(&seraddr,sizeof(seraddr));seraddr.sin_family=AF_INET;seraddr.sin_port=htons(8888);seraddr.sin_addr.s_addr=INADDR_ANY;sockfd=socket(AF_INET,SOCK_DGRAM,0);bind(sockfd,(sockaddr *)&seraddr,sizeof(seraddr));socklen_t len=sizeof(sockaddr);char buf[100]={0};recv(sockfd,buf,strlen(buf)-1,0);printf("buf=%s\n",buf);close(sockfd);
}
客户端:
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <stdarg.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#define MAXLINE 4096int main()
{int sockfd;struct sockaddr_in seraddr;sockfd=socket(AF_INET,SOCK_DGRAM,0);bzero(&seraddr,sizeof(seraddr));seraddr.sin_family=AF_INET;seraddr.sin_addr.s_addr=inet_addr("127.0.0.1");seraddr.sin_port=htons(8888);connect(sockfd,(struct sockaddr *)&seraddr,sizeof(seraddr));char buf[100]="123";send(sockfd,buf,sizeof(buf)+1,0);getchar();exit(0);
}
编译并运行,你会发现服务端有了打印。但是我们使用的是send和recv函数。
[mapan@localhost UDP]$ ./server
buf=123
至于UDP调用connect函数之后异步错误的返回,我这里不演示了。
UDP调用connect函数相关推荐
- UDP调用connect
UDP调用connect函数之前写过了,用的一个编程实例简单说明了一下,今天再更深入的学习一下. 之前博文地址:https://blog.csdn.net/ma2595162349/article/d ...
- 网络编程学习笔记(UDP的connect函数)
对于已连接的UDP套接口,发生了三个变化: 1.再也不能给输出操作指定目的IP地址和端口,也就是说,不能再调用 sendto,而使用send或者write.写到已连接UDP套接口上的任何东西都自动发送 ...
- udp协议连接函数ip4_datagram_connect
udp协议是无连接函数,但也支持系统调用connect函数,调用connect的目的是建立到达目的地址的路由,并把路由保存到路由高速缓冲区中,接下来发送数据包时就可以使用路由高速缓冲区的信息,应用层表 ...
- connect函数介绍
文章目录 1 connect函数介绍 2 connect在TCP应用出错的可能场景 1 connect函数介绍 #include <sys/types.h> /* See NOTES */ ...
- connect函数在阻塞和非阻塞模式下的行为
connect函数在阻塞和非阻塞模式下的行为 当socket使用阻塞模式时,connect函数会阻塞到有明确结果才会返回,如果网络环境较差,可能要等一会,影响体验, 为了解决这个问题,我们使用异步co ...
- 网络编程socket之connect函数
网络编程socket api存在一批核心接口,而这一批核心接口就是几个看似简单的函数,尽管实际上这些函数没有一个是简单.connect函数就是这些核心接口的一个函数,它完成主动连接的过程. conne ...
- Linux下connect函数 阻塞 与 非阻塞 问题
一.概述 linux系统下,connect函数是阻塞的,阻塞时间的长度与系统相关.而如果把套接字设置成非阻塞,调用connect函数时会报错Operation now in progress,且err ...
- udp 使用connect优点_nodejs源码分析第十九章 -- udp模块
udp不是面向连接的协议,所以使用上会比tcp简单,他和tcp一样,使用四元组来标记通信的双方(单播的情况下).我们看看udp作为服务器和客户端的时候的流程. 1 在c语言中使用udp 1.1 服务器 ...
- 如何在sqlite3连接中创建并调用自定义函数
#!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...
最新文章
- XML 序列化 【译】
- 回溯法模板(矩阵中操作)
- sqlserver compact sdf, sqlite 数据库 在net中相对路径设置方法 - 摘自网络
- jbutton 数组创建 java_java-将JButton数组添加到JPanel(按钮不可见)
- Leecode 136. 只出现一次的数字
- 2.4 Python 模块的使用安装导入
- 英世曼 | 动量是否具有行为性?
- 操作系统(OS)进程与调度
- python使用OpenCV-Python结合百度图像识别api实现图片中的文字识别
- DM适配Python
- 龙芯2F入手,点滴记录!
- PPT怎么母版怎么修改及应用
- MATLAB矩阵基础知识(二)
- Kai Ge - Q绑查询V1.3
- linux 视频壁纸,Plasma video wallpaper: KDE 4 视频壁纸
- 前端导出word图片
- 百度携手重庆渝中区,打造区块链大数据智能化应用示范城区
- dhcp、tftp及pxe简介
- OpenCV Java入门三 Mat的基本操作
- 平面几何--角平分线长定理