测试题(二)
时间:2006-11-30 来源:Angel lee
实现网络TCP/IP通信程序,使用任意开发工具。具体要求是: 一个服务器端程序,两个客户端程序。 服务器端程序的功能是:根据不同客户端的连接实现数据的转发。可以实现多个客户端的长连接。
第一个客户端只负责不停的将数据发送到服务器端。 |
此题自己刚开始做时还有点心慌的(水平还烂了点吧),不过今天想来出这题挺有趣的,至少能算过最原始的聊天程序吧,第一个客户端client01负责写,第二个客户端client02负责收消息.代码也发上来吧.
server.c
#include <stdio.h>
/* Define Server Port Number */
void do_service(int sd)
while((n=read(sd,recvbuf,sizeof(recvbuf)))>0) write(fileno(fp),recvbuf,n);
}
int main(int argc, char* argv[])
/* Bind Port */
/* Listen Port */
signal(SIGCHLD, SIG_IGN); /* 不产生僵尸进程 */
switch (fork()) { |
client01.c
#include <arpa/inet.h>
while (fgets(sendline, MAXLINE, fp) != NULL)
write(sockfd, sendline, strlen(sendline));
if (argc != 2) sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr)); connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); str_cli(stdin, sockfd); /* do it all */
exit(0); |
#include <arpa/inet.h>
int
if (argc != 2) sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr)); connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); str_cli(stdin, sockfd); /* do it all */
exit(0); |