socket编程api学习二客户端的编程

代码

#include <unistd.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <arpa/inet.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
     
int main()
{
	int  sockfd = 0;
	sockfd =  socket(PF_INET, SOCK_STREAM, 0);
	if (sockfd == -1)
	{
		perror("fun socket\n");
		exit(0);
	}
	
	struct sockaddr_in  srvaddr;
	srvaddr.sin_family = AF_INET;
	srvaddr.sin_port = htons(8001);
	srvaddr.sin_addr.s_addr = inet_addr("192.168.6.249"); //127.0.0.1
	//srvaddr.sin_addr.s_addr = inet_addr(INADDR_ANY); //绑定本机的任意一个地址 
	
    	if ( connect(sockfd, (struct sockaddr*) (&srvaddr), sizeof(srvaddr)) < 0)
    	{
    		perror("fun socket\n");
		exit(0);
    	}

	char revbuf[1024] = {0};//接受数组
	char sendbuf[1024] = {0};//发送数组
	while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)
	{
		//向服务写数据
		write(sockfd, sendbuf, strlen(sendbuf)); //服务器端回发信息
		//从服务器读数据
		read(sockfd, revbuf, sizeof(revbuf));	
		fputs(revbuf, stdout); //从服务器收到数据,打印屏幕
		memset(revbuf, 0, sizeof(revbuf));
		memset(sendbuf, 0, sizeof(sendbuf));
	}
	close(sockfd);
	return 0; 	
}

客户端和服务器不一样的地方他没有listen,accept,listen代码有把socket变成被动的接受放,accept我的理解就是一个客户端对应的一个连接id这样我们做服务器开发的时候便可以知道我们的客户端的状态。当然查看状态的可以直接用netstat -na | grep 端口号查看链接的状态。希望对大家的学习有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值