linux下C语言socket编程双机互发数据

来源:百度知道 编辑:UC知道 时间:2024/06/02 00:12:09
socket网络编程采用客户机/服务器方式
服务器socket-bind-listen-accept
客户机socket-connect
建立连接后 服务器可以通过send()向客户机recv()发送数据
把send()函数写到客户端,把recv()写到服务端,也可以实现客户端到服务端的发送数据
但是把send()和recv()同时写到一段的时候就会导致无法发送接收数据

我想要实现的是客户端和服务端能够互发数据, 服务端和客户端已经可以正常建立连接,请问在建立连接后该如何实现 (用子进程或是多线程实现?对不起我也不知道该怎么做 比较菜)

请不要纯粹的粘贴程序给我 可以只提点思路或者推荐一点资料 最好可以写点实际的例子

这个问题很好办啦,服务器接受一个连接请求,然后开一个线程或者进程都可以,再在线程或者进程里面采用其他技术实现同时收发(比如I/O复用,比如非阻塞I/O)。客户端也可以采用I/O复用。

推荐资料的话,《unix网络编程》这本书很好,公认的经典,当教科书用,这本书里有你想要的所有内容。

ps:你基础太差,多补补吧,别想一下吃个胖子。

另外我这里正好有个例子满足你的要求,贴给你,自己写的,不是网上找的,用的是多进程加I/O复用技术:

server端:
/****************************************************************
**
**
**
****************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/select.h>
#include <sys/time.h>
#include <unistd.h>

#define BUFLEN 1024
#define MAX(a,b) ((a)>(b)?(a):(b))

typedef void Sigfunc (int);

void s