用网络编程中socket编写服务器与客户端程序

客户端编写思路:

1. socket 创建

2. bind 绑定ip地址和端口号到socket

3. connect 绑定client端与服务器建立连接

4. listen 两个参数,第一个socket,第二个数字(监听队列的大小)。

5. accept 接受socket连接,三个参数(返回值,客户端信息,结构体长度)

    客户端信息:ip、地址族协议、端口号等

 6.send 写操作

 7.recv 读操作 

客户端程序:

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<string.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<pthread.h>
#define PORT 8000
int main()
{
	int sockfd,ret;
	char buf[32]={0};
	struct sockaddr_in server_addr;
	sockfd=socket(PF_INET,SOCK_STREAM,0); 
	if(sockfd==-1)
	{
		perror("socket");
		exit(1);
	}	
    int length=sizeof(server_addr);
	server_addr.sin_family=PF_INET;  //PF_INET 地址族
	server_addr.sin_port= PORT;   //端口号
	server_addr.sin_addr.s_addr=inet_addr("192.168.1.72");   //ip地址  绑定什么连接什么地址 
	ret=connect (sockfd,(struct sockaddr *)&server_addr,length);
	if(-1==ret)
	{
		perror("connect");
		exit(1);
	}
	while(1)
	{
		scanf("%s",buf);
		ret=send(sockfd,buf,strlen(buf),0);
		if(-1==ret)
		{
			perror("send");
		}
		memset(buf,0,sizeof(buf));
	}
	return 0;
}

服务器程序:

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<pthread.h>
#define PORT 8000 
void *ClientHandler(void *arg)
{
	pthread_detach(pthread_self())  ;  //线程分离 
	int ret;
	int fd=*(int *)arg;
	char buf[32]={0};
	
	ret=recv(fd,buf,sizeof(buf),0);   //4个参数 
	if(-1==ret)
	{
		perror("recv");
	//	exit(1);
	}
	printf("recv from %d client %s!\n",fd,buf);
	memset(buf,0,sizeof(buf));
}

猜你喜欢

转载自blog.csdn.net/mmmmmmyy/article/details/81411401