利用socket实现通讯

利用套接字(socket)实现通讯,client发送两个数,server接收并返回这两个数的和

server.c

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
int main()
{
	int server_sockfd,client_sockfd;
	int server_len,client_len;
	struct sockaddr_in server_address;
	struct sockaddr_in client_address;
	server_sockfd=socket(AF_INET,SOCK_STREAM,0);
	server_address.sin.family=AF_INET;
	server_address.sin_addr.s_addr=inet_addr("10.0.3.206");
	server_address.sin_port=9734;
	server_len=sizeof(server_address);
	bind(server_sockfd,(struct sockaddr *) &server_address,server_len);
	listen(server_sockfd,5);
	while(1)
	{
		int a,b;
		printf("服务器等待消息\n");
		client_len=sizeof(client_address);
		client_sockfd=accept(server_sockfd,(struct sockaddr *) 
				&client_address,(socklen_t *__restrict) &client_len);
		read(client_sockfd,&a,sizeof(a));
		read(client_sockfd,&b,sizeof(b));
		a+=b;
		write(client_sockfd,&a,sizeof(a)); 
		close(client_sockfd);
	}
} 

client.c


#include<stdio.h>
#include<sys/types.h>	
#include<sys/socket.h>	//包含套接字函数库 
#include<netinet/in.h>	//包含AF_INET相关结构 
#include<arpa/inet.h>	//包含AF_INET相关操作的函数 
#include<unistd.h>		//包含read(),write()函数 
int main()
{
	int sockfd;		//用于保存客户套接字表示符 
	int len;		//用于保存客户信息长度 
	struct sockaddr_in address;	//定义客户套接字地址 
	int result;		//判断错误信息 
	int a=97,b=5;	//定义传送信息 
	sockfd=socket(AF_INET,SOCK_STREAM,0);	//定义套接字类型 
	address.sin_family=AF_INET;		//定义套接字地址中的域 
	address.sin_addr.s_addr=inet_addr("10.0.3.206");	//定义套接字的地址 
	address.sin_port=9734;		//定义套接字端口 
	len=sizeof(address);
	result=connect(sockfd,(struct *) &address,len); 	//请求连接 
	if(result==-1)		//判断是否成功连接 
	{
		perror("连接失败");
		return 1;
	}
	write(sockfd,&a,sizeof(a));		//向服务器传送信息 
	write(sockfd,&b,sizeof(b));		
	read(sockfd,&a,sizeof(a));		//从服务器接收信息 
	printf("来自服务器的消息%d\n",a);
	close(sockfd);					//关闭连接 
	return 0;
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章