长沙商城网站开发,头像制作软件app,广州白云发布通告,建设银行信用卡管理中心网站首页TCP通信 1.socket-----第一个socket 失败-1#xff0c;错误码
参数类型很多#xff0c;man查看 2.connect 由于s_addr需要一个32位的数#xff0c;使用下面函数将点分十进制字符串ip地址以网络字节序转换成32字节数值 同理端口号也有一个转换函数 我们的端口号位两个字…TCP通信 1.socket-----第一个socket 失败-1错误码
参数类型很多man查看 2.connect 由于s_addr需要一个32位的数使用下面函数将点分十进制字符串ip地址以网络字节序转换成32字节数值 同理端口号也有一个转换函数 我们的端口号位两个字节16位所以使用第二个htons函数
完整示例 3.bind 4.listen--------设置第一个socket为监听的socket
监听有没有客户端发起连接请求 5.accept---第二个socket
从连接请求的队列里面获取这些请求然后与对应的客户端完成连接的建立返回一个已经完成连接的socket的fd 获取ip地址及端口号 返回点分十进制ip地址 端口号 以下示例获取客户端ip及端口号 封装函数时
将字符串转为整形 由于我们输入的ip以及端口号是一个字符串但我们需要一个整形端口号再在sock里转换成一个·32位数所以要用atoi函数将字符串端口号转换成整形。
对比一下 port5000ip都是字符串 示例
客户端 服务器 TCP粘包问题
缓冲区没刷新应该分开的数据一起打包发送 解决
1.手动价格分隔符在接收端辨别
2.指定每次传输长度
3.用结构体 网络通信专用的收发函数
recv flags为MSG_DONTWAIT时执行非阻塞操作 send 同recv接近