`
疯狂的wu
  • 浏览: 4689 次
文章分类
社区版块
存档分类
最新评论

关于Socket通信中的read和write

    博客分类:
  • Java
 
阅读更多
[size=small]read()方法需要3个参数:1)接收数据的字节数组,2)接收的第一个字节应该放入数组的位置,即字节偏移量,3)放入数组的最大字节数。read()方法在没有可读数据时会阻塞等待,直到有新的数据可读,然后读取指定的最大字节数,并返回实际放入数组的字节数(可能少于指定的最大字节数)。循环只是简单地将数据填入data字节数组,直到接收的字节数与发送的字节数一样。如果TCP连接被另一端关闭,read()方法返回-1。对于客户端来说,这表示服务器端提前关闭了套接字。

为什么不只用一个read方法呢?TCP协议并不能确定在read()和write()方法中所发送信息的界限,也就是说,虽然我们只用了一个write()方法来发送回馈字符串,回馈服务器也可能从多个块(chunks)中接受该信息。即使回馈字符串在服务器上存于一个块中,在返回的时候,也可能被TCP协议分割成多个部分。对于初学者来说,最常见的错误就是认为由一个write()方法发送的数据总是会由一个read()方法来接收。
[/size]
分享到:
评论

相关推荐

    python 实现socket通信实例之client.py

    python 实现socket通信实例之client.py socket又称套间字或者...上述Socket功能函数是从传输层协议TCP或者UDP中抽象出来的,一个基本的socket通信可以通过固定的功能函数实现。这里插一句,IP协议是工作在网络层的。

    python 实现socket通信实例之server.py

    python 实现socket通信实例之server.py socket又称套间字或者...上述Socket功能函数是从传输层协议TCP或者UDP中抽象出来的,一个基本的socket通信可以通过固定的功能函数实现。这里插一句,IP协议是工作在网络层的。

    计算机网络实验报告 获取MAC socket通信

    服务器端: package com.softeem.socket.server; import java.io.FileNotFoundException; import java.io.IOException; public class FileServer { ... public static void main...有源码和体会,写的很详细和完整。

    qt socket 一对多,并程,封装read 和write

    跟从刚刚传的one by one 的一对多,并程读写版本,下面继续学习完善。。。多线程一对多。。。

    delphi socket call php socket 例子

    socket_write ( $newsock , "这是一个delphi(客户端) socket 与 PHP_socket(服务器) 通信的例子 测试,交流QQ:410578660。 but ill make an exception :)\n" . "There are " .( count ( $clients ) - 1 ). " ...

    w5500服务器两个socket模板.zip(stm32f103的keil5工程)

    W5500网络芯片,服务器模式,两个...socket0和socket1,本来用来做fecth和write的,精简了一下后当个模板来用,框架以有,只要调用read_sock_data_buffer和write_sock_data_buffer就可以用了. STM32F103VCT6,keil5

    Linux下的TCP通信.doc

    4. accept: 如果监听到客户端连接,则调用accept接收这个连接并同时新建一个socket来和客户进行通信 5. read/write:读取或发送数据到客户端 6. close: 通信完成后关闭socket 客户端的步骤如下: 1. socket: ...

    Linux Socket编程及其在无线网关中的应用.pdf

    socket函数库包括了socket、bind、listen、accept、connect、read、recv、write和send等函数,这些函数提供了创建socket、绑定socket、监听连接请求、接受连接请求、建立连接、发送数据和接收数据等功能。...

    linux IPC之socket解析及实例代码

    Linux下的Socket通信是一种基于文件的IPC通信,也可以是基于其他设备的IPC通信。它可以在本机内不同进程间...待经过上面的步骤后,服务端和客户端已经建立了链接,可以通过write/read或者sendto/recvfrom发送/接收数据

    Linux Socket编程(附实例)

    3.5、read()、write()函数等 3.6、close()函数 4、socket中TCP的三次握手建立连接详解 5、socket中TCP的四次握手释放连接详解 6、一个例子(实践一下) 7、留下一个问题,欢迎大家回帖回答!!!

    QTcpSocket通信编程时阻塞与非阻塞的问题 - findumars - 博客园1

    1. 编程理解(36) 1. 经典资料(15) 1. 开源项目(16) 9.SaaS-云存储,云服务(38) 9.SaaS-云计算-学习(38)

    linux网络编程

    per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射...

    socket 聊天源码

    利用socket进行通信 以下是server端的部分代码 #include #include <sys/socket.h> #include #include #include #include #include using namespace std; int main(){ printf("%s\n","start server ......"); ...

    从零开始的Socket编程学习

    “一切皆socket!...3.5、read()、write()函数等 3.6、close()函数 4、socket中TCP的三次握手建立连接详解 5、socket中TCP的四次握手释放连接详解 6、一个例子(实践一下) 7、留下一个问题,欢迎大家

    基于java实现Socket套接字一对一聊天系统源码+项目说明.zip

    Socket,又称套接字,在TCP/IP协议分层架构中,属应用层和传输层之间的一个抽象层(也有的说是属于传输层),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。 ![在这里插入图片描述...

    基于PHP Socket配置以及实例的详细介绍

    /* +——————————- * @socket通信整个过程 +——————————- * @socket_create * @socket_bind * @socket_listen * @socket_accept * @socket_read * @socket_write * @socket_...

    网络编程,用Java实现服务器与客户端之间的交互教学

    9. Java中的TCP通信:Java提供了两个类用于实现TCP通信程序:Socket类和ServerSocket类。 10. Socket类:Socket类表示客户端套接字,用于实现客户端的TCP通信,包含了IP地址和端口号的网络单位。 11. ServerSocket类...

    进程通信.doc

    早期UNIX进程间通信、基于System V进程间通信、基于Socket进程间通信和POSIX进程间通信。 UNIX进程间通信方式包括:管道、FIFO、信号。 System V进程间通信方式包括:System V消息队列、System V信号灯、System V...

    linux网络编程教程

    然后可以使用send和recv调用与其他的程序通信,也可以使用一般的文件操作来调用read和write与其他的程序进行通信,但send和recv调用可以提供一种更好的数据通信的控制手段。 有两种最常用的套接口,“数据流套接口”...

Global site tag (gtag.js) - Google Analytics