12.15

有道云笔记

tcp服务器

#include 
#define PORT 8899
#define IP "192.168.125.114"
int main(int argc, const char *argv[])
{
	int sfd=-1;
	if((sfd=socket(AF_INET,SOCK_STREAM,0))==-1)
	{
		perror("socket");
		return -1;
	}
#if 1
	int reuse=1;
	if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsocket");
		return -1;
	}
#endif
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(PORT);
	sin.sin_addr.s_addr=inet_addr(IP);
	if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
	{
		perror("bind");
		return -1;
	}

	if(listen(sfd,128)==-1)
	{
		perror("listen");
		return -1;
	}

	struct sockaddr_in cin;
	socklen_t socklen=sizeof(cin);
	int newfd;
	if((newfd=accept(sfd,(struct sockaddr*)&cin,&socklen))==-1)
	{
		perror("accept");
		return -1;
	}
	printf("[%s:%d]:newfd=%d\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),newfd);

	char buf[128];
	while(1)
	{
		bzero(buf,sizeof(buf));

		int res=recv(newfd,buf,sizeof(buf),0);
		if(res==0)
		{
			printf("结束\n");
			break;
		}

		printf("[%s:%d]:%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),buf);
		strcat(buf,"*_*");

		send(newfd,buf,sizeof(buf),0);

	}

	close(newfd);
	close(sfd);

	return 0;
}

tcp客户端

#include 
#define SERIP "192.168.125.114"
#define SERPORT 8899
int main(int argc, const char *argv[])
{

	int cfd;
	if((cfd=socket(AF_INET,SOCK_STREAM,0))==-1)
	{
		perror("socket");
		return -1;
	}

	int reuse=1;
	if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsockopt");
		return -1;
	}

	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(SERPORT);
	sin.sin_addr.s_addr=inet_addr(SERIP);
	if(connect(cfd,(struct sockaddr *)&sin,sizeof(sin))==-1)
	{
		perror("connect");
		return -1;
	}

	char buf[128];
	while(1)
	{
		bzero(buf,sizeof(buf));
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]='\0';

		send(cfd,buf,sizeof(buf),0);

		bzero(buf,sizeof(buf));

		int res=recv(cfd,buf,sizeof(buf),0);
		if(res==0)
		{
			printf("结束\n");
			return -1;
		}
		printf("[%s:%d]:%s\n",SERIP,SERPORT,buf);
	}
	close(cfd);

	return 0;
}

udp服务器

#include 
#define PORT 8877
#define IP "192.168.125.114"
int main(int argc, const char *argv[])
{
	//1创建一个sfd
	int sfd;
	if((sfd=socket(AF_INET,SOCK_DGRAM,0))==-1)
	{
		perror("socket");
		return -1;
	}

	//2端口号快速重用
	int reuse=1;
	if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsockopt");
		return -1;
	}

	//3填充 绑定sfd
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(PORT);
	sin.sin_addr.s_addr=inet_addr(IP);

	if(bind(sfd,(struct sockaddr *)&sin,sizeof(sin))==-1)
	{
		perror("bind");
		return -1;
	}

	//4收发数据
	char buf[128];
	struct sockaddr_in cin;
	socklen_t socklen=sizeof(cin);
	while(1)
	{
		bzero(buf,sizeof(buf));
		recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr *)&cin,&socklen);

		printf("[%s:%d]:%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),buf);

		strcat(buf,"*_*");
		sendto(sfd,buf,sizeof(buf),0,(struct sockaddr *)&cin,sizeof(cin));
	}

	//5关闭
	close(sfd);
	return 0;
}

udp客户端

#include 

#define PORT 8877
#define IP "192.168.125.114"

int main(int argc, const char *argv[])
{
	//1创建一个套接字
	int cfd;
	if(socket(AF_INET,SOCK_DGRAM,0)==-1)
	{
	perror("socket");
	return -1;
	}
#if 0
	//2速用
	int reuse=1;
	if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsockopt");
		return -1;
	}
#endif
	
	//3绑定IP端口号非必要
	
	//4定义服务器地址结构体发送数据
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(PORT);
	sin.sin_addr.s_addr=inet_addr(IP);
	
	char buf[128];
	 while(1)
	 {
		bzero(buf,sizeof(buf));	 
	 	
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]='\0';

		sendto(cfd,buf,sizeof(buf),0,(struct sockaddr *)&sin,sizeof(sin));
		
		recvfrom(cfd,buf,sizeof(buf),0,NULL,NULL);
 		printf("buf=%s\n",buf);
	 }

	//5关
	close(cfd);
	return 0;
}

你可能感兴趣的:(笔记)