socket数据的接收和发送

原创 2016年06月02日 07:47:50

Linux下数据的接收和发送

Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。

前面我们说过,两台计算机之间的通信相当于两个套接字之间的通信,在服务器端用 write() 向套接字写入数据,客户端就能收到,然后再使用 read() 从套接字中读取出来,就完成了一次通信。

write() 的原型为:
ssize_t write(int fd, const void *buf, size_t nbytes);
fd 为要写入的文件的描述符,buf 为要写入的数据的缓冲区地址,nbytes 为要写入的数据的字节数。
size_t 是通过 typedef 声明的 unsigned int 类型;ssize_t 在 "size_t" 前面加了一个"s",代表 signed,即 ssize_t 是通过 typedef 声明的 signed int 类型。
write() 函数会将缓冲区 buf 中的 nbytes 个字节写入文件 fd,成功则返回写入的字节数,失败则返回 -1。

read() 的原型为:
ssize_t read(int fd, void *buf, size_t nbytes);
fd 为要读取的文件的描述符,buf 为要接收数据的缓冲区地址,nbytes 为要读取的数据的字节数。

read() 函数会从 fd 文件中读取 nbytes 个字节并保存到缓冲区 buf,成功则返回读取到的字节数(但遇到文件结尾则返回0),失败则返回 -1。

Windows下数据的接收和发送

Windows 和 Linux 不同,Windows 区分普通文件和套接字,并定义了专门的接收和发送的函数。

从服务器端发送数据使用 send() 函数,它的原型为:
int send(SOCKET sock, const char *buf, int len, int flags);
sock 为要发送数据的套接字,buf 为要发送的数据的缓冲区地址,len 为要发送的数据的字节数,flags 为发送数据时的选项。

返回值和前三个参数不再赘述,最后的 flags 参数一般设置为 0 或 NULL,初学者不必深究。

在客户端接收数据使用 recv() 函数,它的原型为:
int recv(SOCKET sock, char *buf, int len, int flags);
版权声明:本文为芝麻软件工作室原创文章,未经芝麻软件工作室允许不得转载。

socket数据传输过程中如何准确的接收消息

想了半天,也没想出个合适的标题,还是描述问题吧 (1)客户端向服务端发送指令,期望获得回答         (2)服务端响应客户端请求,并返回答案 这看起来是一个非常简单的过程,比如客户端发送一条...
  • KWSY2008
  • KWSY2008
  • 2015年10月15日 20:13
  • 9146

JAVA代码:通过Socket读取返回的数据

JAVA代码:通过Socket读取返回的数据            JavaSocket.netJavaScriptSUN        package net.java2000.ne...
  • yuanyuan_186
  • yuanyuan_186
  • 2013年11月14日 15:33
  • 2391

我所不知道的TCP Socket编程(五)-交换数据、套接字读写操作

五:交换数据            已经建立了服务器和客户端的链接,现在需要让它们进行数据交换;            你可以将TCP连接想象成一串连接了本地套接字和远程套接字的管子,我们可以...
  • baby_hua
  • baby_hua
  • 2017年07月20日 14:43
  • 336

Socket收发数据浅析

作为一个套接字描述符,它拥有两个缓冲区,分别为接收数据缓冲和发送数据缓冲区,当套接字有数据到达时,首先进入的就是接收数据缓冲区,然后应用程序从这个缓冲区中将数据读出来,这就是套接字recv的过程,应用...
  • xiaodoubao124
  • xiaodoubao124
  • 2015年07月25日 15:28
  • 770

Socket收发数据浅析

作为一个套接字描述符,它拥有两个缓冲区,分别为接收数据缓冲和发送数据缓冲区,当套接字有数据到达时,首先进入的就是接收数据缓冲区,然后应用程序从这个缓冲区中将数据读出来,这就是套接字recv的过程,应用...
  • xiaodoubao124
  • xiaodoubao124
  • 2015年07月25日 15:28
  • 770

ServerSocket和Socket建立通信(客户端发送消息服务器接收并返回到客户端接收输出)

需求:客户端发送消息到服务器,服务器接收到消息并读取输出,然后写出到客户端客户端接收到输出。 1、建立服务器端      |-服务器建立通信ServerSocket      |-服务器建立So...
  • yejin191258966
  • yejin191258966
  • 2013年12月21日 16:25
  • 17748

Socket Receive数据一次性接收不全的问题

在发送端,一次发送4092个字节, 在接收端,一次接收4092个字节, 但是在接收端,偶尔会出现 socket.receive 接收不全的情况 , ret = sockTemp.Re...
  • e_wsq
  • e_wsq
  • 2013年11月12日 06:05
  • 2307

Socket学习【2】——持续接收数据

持续接收数据 服务器端 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
  • yuxikuo_1
  • yuxikuo_1
  • 2016年05月30日 20:04
  • 1018

ServerSocket和Socket建立通信(服务器和客户端循环接收发送)

需求:服务器不断的接收返回信息到客户端中,客户端可以不断地额给服务器发送消息,并可以接收到服务器返回的消息。这跟我们聊天一样。 思路:1、服务器端:1)建立ServerSocket和开启监听客户端连...
  • yejin191258966
  • yejin191258966
  • 2013年12月21日 16:47
  • 13339

PHP-Socket服务端客户端发送接收通信实例详解

Socket介绍 什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 在Inter...
  • suxun
  • suxun
  • 2015年07月01日 09:34
  • 4228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:socket数据的接收和发送
举报原因:
原因补充:

(最多只允许输入30个字)