Linux下TCP客户端的简单搭建

客户端的搭建与服务器类似:socket()->bind()->connect()->read()/write()->close(),客户端的绑定为可选项,可以不绑定,但是connect请求连接,一定是绑定的服务器的IP地址和端口号

#include 
#include           /* See NOTES */
#include 
#include 
#include 
#include 
int main()
{
	int sockfd = socket(AF_INET,  SOCK_STREAM, 0);  //socket函数的三个参数分别是:指定地址族、socket套接字类型、协议
	if(sockfd == -1)     //进行出错处理
	{
		perror("sockfd");
		return -1;
	}
	printf("sockfd=%d\n", sockfd);
	struct sockaddr_in addr;    //定义Internet地址结构变量,用来保存服务器的IP地址和端口号
	memset(&addr, 0, sizeof(addr));
	addr.sin_family = AF_INET; //TCP/IPv4协议
	addr.sin_addr.s_addr = inet_addr("127.0.0.1");  //将点分式IP地址转换成网络字节序,这个地址一定是服务器的IP地址
	addr.sin_port = htons(8000); //端口号由主机字节序转换成网络字节序
	ssocklen_t addr;
	addrlen = sizeof(addr);
	int ret;
	ret = connect(sockfd, (struct sockaddr *)&addr, addrlen);   //与服务器的IP与端口号与socket绑定
	if(ret == -1)
	{
		perror("connect");
		close(sockfd);
		return -1;
	}
	printf("connect success\n");
	char buf[128];
	memset(buf, 0, sizeof(buf));
	fgets(buf, sizeof(buf)-1, stdin);  //从键盘上获取字符
   ret = write(rws, buf, sizeof(buf)); //给服务器发送数据
	if(ret == -1)
	{
		perror("write");
		close(rws);
		return -1;
	}
	printf("msg:%s\n", buf);  //打印键盘上获取的数据
	close(sockfd);
}

你可能感兴趣的:(Linux下TCP客户端的简单搭建)