首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

《UNPv1》:来射字符串的服务器/客户端(多进程TCP版)

2012-11-16 
《UNPv1》:回射字符串的服务器/客户端(多进程TCP版)《Unix网络编程卷1:套接字联网API》这本书附带了许多短小精

《UNPv1》:回射字符串的服务器/客户端(多进程TCP版)

    《Unix网络编程卷1:套接字联网API》这本书附带了许多短小精美的小程序,我在阅读此书的时候,将书上的代码按照自己的理解重写了一遍(大部分是抄书上的),加深一下自己的理解(纯看书太困了,呵呵)。此例子在Ubuntu10.04上测试通过。

    PS:程序里使用了包裹函数(首字母是大写的函数)和常量(所有字母都是大写的常量)的声明和定义在my_unp_v1.h和my_unp_v1.c中,地址:http://blog.csdn.net/aaa20090987/article/details/8096701


    程序简介:这一对例子演示了多进程服务器和客户端使用TCP协议传输数据的基本原理和流程。当一个客户端连接上服务器时,服务器就产生一个子进程来与客户端进行通信。


服务端:

#include "my_unp_v1.h"void str_cli(FILE *fp, int sockfd){char sendline[MAXLINE], recvline[MAXLINE];//从终端获取一行字符串,将其写入套接字//然后从套接字一行字符串,将其写入终端while( Fgets(sendline, MAXLINE, fp) != NULL ){Writen(sockfd, sendline, strlen(sendline));if( Readline(sockfd, recvline, MAXLINE) == 0 )error_quit("str_cli: server terminated prematurely");Fputs(recvline, stdout);}}int main(int argc, char **argv){int sockfd;struct sockaddr_in servaddr;if( argc != 2 )error_quit("usage: client <IPAddress>");//创建用于TCP协议的套接字 sockfd = Socket(AF_INET, SOCK_STREAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(SERV_PORT);//将程序的参数1(argv[1])转换成套接字地址结构Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);////向服务器发起连接,连接成功后client_socket代表了客户机和服务器的一个socket连接 Connect(sockfd, (SA*)&servaddr, sizeof(servaddr));str_cli(stdin, sockfd);return 0;}


运行示例(红色字体的为输入)

服务器端:

qch@ubuntu:~/code$ gcc my_unp_v1.c server.c -o server
qch@ubuntu:~/code$ ./server 
connection from 127.0.0.1, port 47538. process with clild 11205
child 11205 terminated

客户端:

qch@ubuntu:~/code$ gcc my_unp_v1.c client.c -o client
qch@ubuntu:~/code$ ./client 127.0.0.1
ABCD
ABCD
Ctrl+D

热点排行