TCP、UDP套接字的数据传输
tcp发送数据:
1 #include <sys/types.h> 2 #include <socket.h> 3 ssize_t send(int sockfd,const void *msg,size_t len,int flags);
函数send只能对面向连接的套接字使用。参数sockfd为已经建立好连接的套接字描述符。参数msg指向待发送数据的缓冲区,参数len为代发数据的长度。参数flags为控制选项:
MSG_OOB:在指定的套接字上发送带外数据(out-of-band data),该类型的套接字必须支持带外数据(如SOCK_STREAM)。
MSG_DONTROUTE:通过最直接的路径发送数据,而忽略下层协议的路由设置。
PS:函数执行成功只是说明数据写入套接字的缓冲区中,并不表示数据已经成功地通过网络发送到目的地。
tcp接收数据:
#include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd,void *buf,size_t len,int flags);
函数从sockfd接受数据并保存到参数buf中,参数len为缓冲区的长度。(只能是面向连接的套接字)参数flags为控制选项:
MSG_OOB:请求接受带外数据。
MSG_PEEK:只查看数据而不读出。
MSG_WAITALL:只在接受缓冲区满时才返回。
如果一个数据报太长以至于无法完全放下时,剩余部分将可能丢弃。如果在指定的套接字上无数据到达时,recv函数将阻塞。成功返回收到的字节数,出错-1,错误代码errno。
UDP发送数据:
#include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd,const void *msg,size_t len,int flags,const struct sockaddr *to,socklen_t tolen);
函数sendto的功能和send类似,但函数sendto不需要套接字一定是面向连接的,所以该函数主要用来发送UDP数据。参数to指定目的地地址。
UDP接收数据:
#include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd,void *buf,size_t len,int flags,struct sockaddr *from,socklen_t *fromlen);
函数recvfrom与函数recv类似,但recvfrom不要求套接字一定是面向连接的。如果参数from非空,且该套接字不是面向连接的,则函数返回时,参数from中将保存数据的源地址。
关闭套接字:
#include <unistd.h> int close(int fd);
#include <sys/socket.h> int shutdown(int s,int how);
参数how的取值:
SHUT_RD:将连接的读通道关闭,接收缓冲区中的未读取数据将丢弃,仍可以发送数据。
SHUT_WR:将连接的写通道关闭,发送缓冲区中的为发送的数据丢弃,仍可以接收数据。
SHUT_REWR:读写通道都关闭。
成功0,出错-1,errno。
转载于:https://www.cnblogs.com/FootPrintofLeon/p/6492618.html
TCP、UDP套接字的数据传输相关推荐
- 网络编程---TCP/UDP套接字编程原理
本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 本篇重在讲解原理,具体实现请戳这里->UDP套接字编程实现 介绍 网络编程套接字(s ...
- TCP/UDP套接字网络协议
TCP服务端(以字节串传输信息) import socket 1.创建套接字 sockfd = socket.socket(socket_family = AF_INET,socket_type = ...
- 计网实验原理-TCP/UDP套接字编程
计算机网络自顶向下结构--第7版 第二章实验,套接字编程 代码运行环境:window10,python 3.8.对于书上代码略作修改. 进程与计算机网络之间的接口 多数应用程序是由通信进程队组成的,每 ...
- TCP/UDP 套接字总结
参考 <<TCP/IP网络编程>> 伊圣雨 套接字简介 套接字可以连接为计算机为了通信准备的一种标准接口,这个接口函数与操作系统联系紧密,是实现计算机之间通信的重要基础. TC ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协 ...
- 【JavaEE】网络编程之TCP套接字、UDP套接字
目录 1.网络编程的基本概念 1.1为什么需要网络编程 1.2服务端与用户端 1.3网络编程五元组 1.4套接字的概念 2.UDP套接字编程 2.1UDP套接字的特点 2.2UDP套接字API 2.2 ...
- 【网络编程】Socket套接字;UDP数据报套接字编程;TCP流套接字编程
文章目录 1. 什么是网络编程 2. 网络编程中的基本概念 3. Socket套接字 4 UDP数据报套接字编程 4.1 客户端服务器交互流程 4.2 UDP版本的回显服务 4.3 英译汉服务 5. ...
- tcp/ip 协议栈Linux内核源码分析15 udp套接字接收流程二
内核版本:3.4.39 上篇我们分析了UDP套接字如何接收数据的流程,最终它是在内核套接字的接收队列里取出报文,剩下的问题就是谁会去写入这个队列,当然,这部分工作由内核来完成,本篇剩下的文章主要分析内 ...
- tcp/ip 协议栈Linux内核源码分析14 udp套接字接收流程一
内核版本:3.4.39 前面两篇文章分析了UDP套接字从应用层发送数据到内核层的处理流程,这里继续分析相反的流程,看看数据是怎么从内核送到应用层的. 与发送类似,内核也提供了多个接收数据的系统调用接口 ...
最新文章
- 表现层框架Struts/Tapestry/JSF架构比较 [转]
- C 语言编程 — Makefile
- 学会转变你的思维方式,一切都会变得不一样
- linux用户命令权限管理,Linux命令-用户、权限管理
- Catch That Cow——BFS
- 三星w2014android,三星W2014评测:机身细节及内部设计
- Acronis Disk Director 11 Home下载,分区之王
- 初学者之路—————Cycle GAN
- 图片从服务器在网页显示,spring从服务器磁盘读取图片,然后显示于前端页面上...
- JS微信打飞机游戏(一)
- JSP实用教程第二章-JSP语法
- 【面试系列】计算机网络常见面试题(一)
- 数据中心光纤布线的发展趋势
- 职业生涯发展理论(精)
- Android 签名机制原理解析和V1 、V2签名区别
- WebRTC 实现P2P音视频通话——原生IOS端使用WebRTC实现一对一音视频通话
- 解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- catti二级笔译综合能力真题_catti二级笔译综合能力试题精选及答案解析
- 微信小程序自定义分享功能开发笔记
- 基于WebSocket的在线聊天室