UNIX TCP回射服务器/客户端(1):用于测试的客户端

本文详细介绍了如何使用《Unix网络编程》一书中的代码,结合Ubuntu10.04环境,实现了一个用于测试TCP服务器的客户端程序。程序原理简单,通过TCP协议与服务器建立连接,实现客户端与服务器间的字符串交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

    程序简介:这个一个专门用于测试TCP服务器的客户端。它的原理很简单,利用TCP协议,先和指定的服务器建立连接,然后从终端读取一段字符串,并发送给服务器,最后读取服务器的返回,并显示在终端上。


上代码:

#include "my_unp.h"  

void str_cli(FILE *fp, int sockfd)  
{  
	char sendline[MAXLINE], recvline[MAXLINE];  
	int len;

	//从终端获取一行字符串,将其写入套接字  
	//然后从套接字一行字符串,将其写入终端  
	while( Fgets(sendline, MAXLINE, fp) != NULL )  
	{  
		Writen(sockfd, sendline, strlen(sendline));  
		len = Read(sockfd, recvline, MAXLINE);
		if( len == 0 )  
			error_quit("str_cli: server terminated prematurely");  
		recvline[len] = 0;
		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 client.c -o client
qch@ubuntu:~/code$  ./client 127.0.0.1
ABCD
ABCD
Ctrl+D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值