4月2的作业

服务器

  1	#include<string.h>
     2	#include<stdlib.h>
     3	#include<stdio.h>
     4	#include <sys/types.h>	       /* See NOTES */
     5	#include <sys/socket.h>
     6	       #include <arpa/inet.h>
     7	#include <unistd.h>
     8	#include <netinet/in.h>
     9	#define ERR_RES(a) do{\
    10		fprintf(stderr,"line:%d\n",__LINE__);\
    11		perror(a);}while(0)
    12	
    13	#define IP "192.168.0.107"
    14	int main(int argc, const char *argv[])
    15	{
    16	
    17		int server_fd = socket(AF_INET, SOCK_STREAM,0);
    18		if(server_fd < 0)
    19		{
    20			ERR_RES("socket");
    21			return -1;
    22		}
    23		struct sockaddr_in sin;
    24	
    25		sin.sa_family = AF_INET; /* address family: AF_INET */
    26		sin.sin_port = htons(7896);  /* port in network byte order */
    27		sin.sin_addr.s_addr = inet_addr(IP);   /* internet address */
    28		if(bind(server_fd,(struct sockaddr*)&sin,sizeof(sin)) < 0)
    29		{
    30			ERR_RES("bind");
    31			return -1;
    32		}
    33		printf("bind success __%d__\n", __LINE__);
    34		//监听
    35		if(linsten(server_fd,128) < 0)
    36		{
    37			ERR_RES("linsten");
    38			return -1;
    39		}
    40		printf("listen success __%d__\n",__LINE__);
    41		
    42		struct sockaddr_in cin;
    43		socklen_t addrlen = sizeof(cin);
    44		int new_fd = accept(server_fd,(struct sockaddr*)&cin,&addrlen);
    45	
    46		if(new_fd < 0)
    47		{
    48			ERR_RES("accept");
    49			return -1;
    50		}
    51		printf("[%s : %d]"new_fd = %d 连接成功__%d__\n,\
    52				int_ntoa(cin.sin_addr),ntohs(cin.sin_port),new_fd,__LINE__);
    53		char buf[1024] = "";
    54		ssize_t res = 0;
    55		while(1)
    56		{
    57			memset(buf,0,sizeof(buf));
    58			res = recv(new_fd,buf,sizeof(buf),0);
    59			if(ers < 0)
    60			{
    61				ERR_RES("recv");
    62				return -1;
    63			}
    64			else if(0 == res)
    65			{
    66	
    67				printf("[%s : %d]"new_fd = %d 客户端下线__%d__\n,\
    68						int_ntoa(cin.sin_addr),ntohs(cin.sin_port),new_fd,__LINE__);
    69				break;
    70			}
    71			printf("[%s : %d]"new_fd = %d :%s  __%d__\n,\
    72					int_ntoa(cin.sin_addr),ntohs(cin.sin_port),new_fd,buf__LINE__);
    73			//发送
    74			strcpy(buf,"*_*");
    75			if(send(new_fd,buf,sizeof(buf),0) < 0)
    76			{
    77				ERR_RES("send");
    78				return -1;
    79			}
    80			printf("发送成功\n");
    81		}
    82		close(new_fd);
    83		close(server_fd);
    84	
    85		return 0;
    86	}

客户端

 1	#include<string.h>
     2	#include<stdlib.h>
     3	#include<stdio.h>
     4	#include <sys/types.h>	       /* See NOTES */
     5	#include <sys/socket.h>
     6	#include <netinet/in.h>
     7	#include <arpa/inet.h>
     8	#include <unistd.h>
     9	
    10	#define ERR_RES(a) do{\
    11		fprintf(stderr,"line:%d\n",__LINE__);\
    12		perror(a);\
    13	}while(0)
    14	#define IP "192.168.0.107"
    15	
    16	int main(int argc, const char *argv[])
    17	{
    18		int client_fd = socket(AF_INET,SOCK_STREAM,0);
    19		if(client_fd < 0)
    20		{
    21			ERR_RES("socket");
    22			return -1;
    23		}
    24		struct cockaddr_in sin;
    25		sin.sin_family = AF_INET;
    26		sin.sin_port = htons(7896);
    27		sin.sin_addr.s_addr = inet_addr(IP);
    28		if(connect(client_fd,(struct sockaddr*)&sin,sizeof(sin)) < 0)
    29		{
    30			ERR_RES("connect");
    31			return -1;
    32		}
    33		printf("connect success\n");
    34		char buf[1024] = "";
    35		ssize_t rev = 0;
    36		while(1)
    37		{
    38			memset(buf,0,sizeof(buf));
    39			fgets(buf,sizeof(buf)-1,stdin);
    40			buf[strlen(buf)-1] = '\0';
    41			if(send(client_fd,buf,sizeof(buf),0) < 0)
    42			{
    43				ERR_RES("send");
    44				return -1;
    45			}
    46			printf("发送成功\n");
    47			memset(buf,0,sizeof(buf));
    48			rev = recv(client_fd,buf,sizeof(buf),0);
    49			if(rev < 0)
    50			{
    51				ERR_RES("recv");
    52				return -1;
    53			}
    54			else if(0 == rev)
    55			{
    56				printf("服务器下线\n");
    57				break;
    58			}
    59			printf(": %S__%d__\n",__LINE__);
    60		}
    61		close(client_fd);
    62		return 0;
    63	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值