- 浏览: 2662227 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
int send( SOCKET s, const char FAR *buf, int len, int flags );
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。
客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。
该函数的第一个参数指定发送端套接字描述符;
第二个参数指明一个存放应用程序要发送数据的缓冲区;
第三个参数指明实际要发送的数据的字节数;
第四个参数一般置0。
这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲 的 长度 , 如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议 是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的发送缓冲中没有数据,那么 send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间大小send就一直等待协议把s的发送缓冲中的数据发送完,如果len小于剩余 空间大小send就仅仅把buf中的数据copy到剩余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的,而是协议传的, send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里 )。 如果send函数copy数据成功,就返回实际copy的字节数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send函数也返回SOCKET_ERROR。
要注意send函数把buf中的数据成功copy到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一定马上被传到连接的另一端 。 如 果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。(每一个除send外的Socket函数在执 行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该Socket函数就返回 SOCKET_ERROR)
注意:在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
recv函数
int recv( SOCKET s, char FAR *buf, int len, int flags );
不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。
该函数的第一个参数指定接收端套接字描述符;
第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;
第三个参数指明buf的长度;
第四个参数一般置0。
这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲 中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数 据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,只到 协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据copy到buf中(注意协议接收到的数据可能大于buf的长度,所以 在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。recv函数仅仅是copy数据,真正的接收数据是协议来完成的 ),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
发表评论
-
TCP滑动窗口
2014-06-04 16:10 853目前建立在TCP协议上的网络协议特别多,有telnet,ss ... -
TCP 滑动窗口协议
2013-11-07 18:36 5556TCP滑动窗口机制 我们可以大概看一下上图的模型 ... -
关于JAVA取本机ip的一些总结
2013-09-13 14:29 8232通常绑定本机ip地址 一般如下 I ... -
网络编程中Nagle算法和Delayed ACK的测试
2013-07-28 22:44 950网络编程中Nagle算法和Delayed ACK的测试 -
NFS-RPC框架优化过程(从37k到168k)
2013-07-18 22:17 1518NFS-RPC框架从编写之初,到现在为止(应该还会有些提升, ... -
Java程序员也应该知道的一些网络知识
2013-07-18 22:11 917对于需要编写网络通 ... -
深入理解JDBC的超时(timeout)设置
2013-06-26 15:27 6398真实案例:应用服务器在遭到DDos攻击后无法响应 在遭到 ... -
socket InputStream available()lock的问题
2013-03-28 18:45 3226在socket InputStream读取数据的问题记录一 ... -
socket参数对性能的影响
2013-03-26 14:51 1138今天发现线上一台机器的cilent端很慢,通过打点记录相关 ... -
socket InputStream读取数据的问题记录
2013-03-13 17:42 2433在用java写socket client的发现一个问题,如 ... -
java socket参数详解:TcpNoDelay
2012-12-14 19:28 1562TcpNoDelay=false,为启用nagle算法,也是默 ... -
python高性能网络框架Twisted介绍
2012-11-12 21:48 0什麼是Twisted Twisted是一 ... -
Reactor模式,或者叫反应器模式
2012-11-12 20:58 0原文:http://daimojingde ... -
libevent源码分析
2012-11-12 20:52 977原文参考: http://blog.csdn.net/spar ... -
java socket 参数说明
2012-11-10 16:19 1716Socket 的 I/O 调用可 ... -
一个自定义协议的例子
2012-11-10 14:54 3016public class VoteMsg { pr ... -
python struct
2012-11-07 14:03 788在使用python向java发送数据的时候一般是需要记录数据长 ... -
Frame实现
2012-11-06 21:01 874这里讨论Frame的实现问题。 -
Java Socket codec
2012-11-06 20:08 1158要写好java的网络编程并 ... -
Java网络编程--Socket编程
2012-11-03 23:07 1028原文:http://blog.sina.com.c ...
相关推荐
Socket 编程中的 send 和 recv 函数详解 在 Socket 编程中,send 和 recv 函数是最基本的网络通信函数。它们用于在客户端和服务端之间传递数据。在 TCP/IP 协议中,send 函数用于将数据发送到服务端,而 recv 函数...
### send函数与recv函数详解 在计算机网络编程中,socket编程是实现进程间通信的一种重要方式,其中`send`函数和`recv`函数是进行数据发送与接收的关键接口。下面将详细阐述这两个函数的工作原理、参数意义以及使用...
在 Windows 平台下,使用 winsock 函数时,recv 函数也会返回-1,但是如果没有设置超时,send 和 recv 函数都会堵住不动。 学习 socket_recv 函数需要了解其返回值的含义和使用场景,了解套接字的选项和多路复用 ...
Socket API提供了send和recv函数,它们是TCP/IP通信的核心组件,用于在套接字之间发送和接收数据。在C语言环境中,socket编程主要涉及到以下知识点: 1. **套接字(Socket)概念**:套接字是网络通信的一种端点,...
Python的socket模块提供了一系列的函数和类,用于实现TCP(传输控制协议)和UDP(用户数据报协议)等网络通信协议。在开始使用socket之前,我们需要导入socket模块,并创建一个socket对象。 2. **socket的创建**:...
该函数的原型为:`send(socket, data, length, flags)`。 * `socket`:是所用套接字的描述符。 * `data`:是待发送数据在内存中的地址。 * `length`:是一个整数,指定数据的字节数。 * `flags`:包含请求特殊选项...
在Linux操作系统中,`send`和`recv`是两个核心的网络编程函数,它们用于实现套接字(socket)间的通信。这两个函数是基于Berkeley套接字API的一部分,广泛应用于客户端-服务器程序的设计中。本文将深入探讨`send`和`...
`recv()`和`send()`函数分别用于接收和发送数据。`recv()`函数从套接字接收数据,而`send()`函数则将数据发送到套接字。它们是网络通信中最基本且最频繁使用的函数。 ### recvfrom() 和 sendto() `recvfrom()`和`...
在Windows系统中,`ws2_32.dll`是一个重要的动态链接库,它包含了用于网络编程的函数,如`send()`和`recv()`。这些函数是Windows Socket API(Winsock)的一部分,允许开发者进行TCP/IP通信。在这个话题中,我们主要...
#### 一、Send函数详解 `send`函数用于从一个套接字中发送数据。其原型如下: ```c++ int send( SOCKET s, const char FAR *buf, int len, int flags ); ``` - **参数解释**: - `SOCKET s`: 指定发送数据的...
《Windows Socket API函数详解》 Windows Socket API,简称Winsock,是Microsoft为Windows操作系统实现的一套网络编程接口,它遵循BSD Socket模型,提供了丰富的函数集,用于开发TCP/IP网络应用程序。这些API函数...
- `send()` 和 `recv()`:这两个函数用于发送和接收数据。在连接建立后,客户端和服务器都可以通过`send()`发送数据,通过`recv()`接收数据。 在局域网内收发信息,我们通常会使用广播或多播技术。广播是将信息发送...
int send( SOCKET s, const char FAR *buf, int len, int flags );...这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲的 长度, 如果
发送数据的主要函数是`send()`和`recv()`,它们分别用于向连接的Socket发送数据和接收数据: ```c int send(SOCKET s, const char *buf, int len, int flags); int recv(SOCKET s, char *buf, int len, int flags);...
### 有关socket编程的函数详解 #### 一、概述 Socket编程是网络编程的重要组成部分,它使得不同计算机之间可以通过网络进行通信。在Windows环境下,使用socket编程时,我们需要调用一系列特定的API函数来实现这一...
相比之下,recv函数用于从TCP连接的另一端接收数据。它的函数原型为: ```cpp int recv(SOCKET s, char FAR *buf, int len, int flags); ``` 参数含义与send类似,但recv在接收数据时的行为有所不同。recv会等待发送...
### Socket编程核心函数详解 #### 1. accept(接受socket连接) ...在实际应用中,还需结合`socket()`, `listen()`, `send()`, `recv()`等其他函数,以及理解socket的不同类型和协议族,才能构建完整的网络通信系统。
Socket接口提供了丰富的函数,使得开发者能够创建、连接、发送和接收数据。本教程将深入探讨Linux下的Socket模板函数,以帮助你理解如何有效地进行发送和接收操作。 一、Socket基础概念 Socket可以视为进程间通信的...
6. send()和recv()函数 这两个函数用于在已连接的Socket之间发送和接收数据。send()的原型为: ```c ssize_t send(int sockfd, const void *buf, size_t len, int flags); ``` recv()的原型为: ```c ssize_t recv...