思路主线程负责发送消息,另一线程负责接收消息。服务端和客户端均是如此。注意当A方close掉用于通信的socket端口后,该端口是不会立即关闭的。因为此时可能B方的信息还没send完。因此,此时A方的recv仍旧处于阻塞状态,会最后再等待收一次信息。此时,当B方send一个信息给A后,A方recv到...
分类:
其他好文 时间:
2014-09-10 12:20:40
阅读次数:
219
//第一个程序先发后收#include #include #include #include #include #include int main(int argc, char* argv[])//EXE send_fifo recv_fifo{ /* A创建管道1,我们假定其先发消息,再收消...
分类:
其他好文 时间:
2014-09-05 19:55:01
阅读次数:
402
对UDP socket缓冲区的理解
UDP套接字的收发报文要用sendto 和 recvfrom,可以类比TCP套接字的connect和accept,参数里面会标识要发往的对端,或者要接收的对端的IP地址和端口;对UDP套接字connect的行为也只是告诉内核:“帮我做个过滤,我只关心这个对端的报文”,已连接的UDP套接字上可以利用read,
write, recv, se...
分类:
其他好文 时间:
2014-09-05 14:23:51
阅读次数:
254
非阻塞模式下,建立连接没有调用send()和recv()进行数据交互的情况怎么判断服务端连接主动断开?
通过recv()函数,没有数据时返回-1,服务端断开返回0,通过返回0判断服务端是否断开
unsigned long u32NonBlock = 1;
if ( ioctlsocket(pDlg->m_s32Socket, FIONBIO, &u32NonBlock) ) ...
分类:
其他好文 时间:
2014-09-02 14:12:54
阅读次数:
171
思路 主线程负责发送消息,另一线程负责接收消息。服务端和客户端均是如此。 注意 当A方close掉用于通信的socket端口后,该端口是不会立即关闭的。因为此时可能B方的信息还没send完。因此,此时A方的recv仍旧处于阻塞状态,会最后再等待收一次信息。此时,当B方send一个信息给A后,A方re...
分类:
系统相关 时间:
2014-08-31 17:12:01
阅读次数:
283
此程序实现没有亲缘关系的两个进程间通过共享内存进行数据通信。
同时,使用信号量保证两个进程的读写同步:发送方在写共享内存时,接收方不能读数据;接收方在读数据时,发送方不能写数据。
1、fork创建子进程
2、使用二元信号量,同步读写端
fork_shm.c
#include
#include
#include
#include"send_recv.h"
int main(void)...
分类:
系统相关 时间:
2014-08-30 00:07:28
阅读次数:
330
TCP与UDP通信流程 TCP通信的基本步骤如下: 服务端:socket---bind---listen---while(1){---accept---recv---send---close---}------close 客户端:socket-----------------------------...
分类:
系统相关 时间:
2014-08-29 22:30:18
阅读次数:
362
在开发的一个基于rtmp聊天的程序时发现了一个很奇怪的现象。在windows下当我们执行 closesocket的操作之后,阻塞的 recv会立即返回 -1 。而在linux下当我们执行close操作之后阻塞的recv会出现不能立即返回的现象。后来在网上一搜发现很多遇到类似这种现象的情况,大致意思应...
分类:
系统相关 时间:
2014-08-28 19:40:45
阅读次数:
317
基于TCP(面向连接)的Socket编程一、客户端:1、打开一个套接字(Socket);2、发起连接请求(connect);3、如果连接成功,则进行数据交换(read、write、send、recv);4、数据交换完成,关闭连接(shutdown、close);二、服务器端:1、打开一个套接字(So...
Unix/Linux支持伯克利风格的套接字编程,它同时支持面向连接和面向无连接类型的套接字。套接字最常用的一些系统调用:socket() bind()connect()listen()accept()send()recv()sendto()recvfrom()close()shutdown()se....
分类:
其他好文 时间:
2014-08-17 19:52:12
阅读次数:
268