我有一台服务器联系另一台服务器,用于检索客户端请求的文件。字节到与TCP套接字发送的字节
请求过程是:
Client ----> Server A ----> Server B
发送文件的过程:
Server B ---> server A ----> client
我不能直接将客户端连接到服务器B.
这是要求:
服务器A必须在客户端到达另一个客户端时转发到客户端文件数据服务器(无需等待整个文件的接收)。所以字节到字节到达。
其他信息:
TCP socket;
Programming in C on Linux.
可能有人请给我一些想法来实现这一点?
更新
这是我第一次尝试。
/* This code is refered to SERVER A */
/* s is the file descriptor for comunicate with SERVER B */
/* t is the file descriptor for comunicate with CLIENT */
int forward (int s, int t, char *buffer, size_t bytes){
size_t n;
ssize_t nread;
ssize_t nsend;
char c;
for (n=1; n<bytes; n++)
{
nread=recv(s, &c, 1, 0);
if (nread == 1)
{
nsend = send(t,c,1,0);
if (nsend<=0) {
return (-1);
}
}
else if (nread == 0)
{
return (n-1); /* Errore */
}
else
return (-1); /* Errore */
}
return (n);
}
首先试一下,这不是一个好问题。您需要使用多线程/处理C程序来为更多的客户端提供服务,并同时在服务器A上侦听并下载/上传。在服务器B上,您需要侦听来自服务器A的请求,然后发送数据B。马上重传数据。如果你需要更多的定制,使用UDP,而不是TCP。 – bartimar
但是,您可以在B上安装B磁盘并让samba来处理这个问题吗? – bartimar
您正在描述一个[netcat](http://en.wikipedia.org/wiki/Netcat)管道 –