#include<string.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<netinet/in.h>
#include<bits/socket.h>
#include<sys/un.h>
#include<unistd.h>
#include<sys/socket.h>
#include<assert.h>
//sever
int main()
{
int sockfd=socket(PF_INET,SOCK_STREAM,0);//创建socktet
struct sockaddr_in ser,cli;//使用专用的sockaddr
memset(&ser,0,sizeof(ser));//避免干扰
ser.sin_family=AF_INET;//确定地址族
ser.sin_port=htons(6000);//转换到网络大端字节序
ser.sin_addr.s_addr=inet_addr("127.0.0.1");//设定IP地址
int falg=bind(sockfd,(struct sockaddr*)&ser,sizeof(ser));//将自己设定的addr绑定到socket上
assert(flag!=-1);
listen(sockfd,5);//给socket设定监听队列完全连接状态的socket上限 此时sockfd变成监听socket
char recvbuff[128]={0};
socklen_t len=sizeof(cli);
while(1)
{
int sockcli=accept(sockfd,(struct sockaddr *)&cli,&len);//返回远端连接socket以及socket地址
if(socket<0)
{
continue;
}
while(1)
{
flag=recv(sockcli,recvbuff,128,0);//注意服务器端是被连接端,所以是先收 后发
if(flag<=0)
break;
printf("cli:%s\n",recvbuff);
send(sockcli,"accept success",128,0);
}
close(sockcli);
}
close(sockfd);
}
}
//cli
int main()
{
int sockfd=socket(PF_INET,SOCK_STREAM,0);
assert(sockfd!=-1);
struct sockaddr_in ser;//指定要连接的服务器端的socket地址
memset(&ser,0,sizeof(ser));
ser.sin_family=AF_INET;
ser.sin_port=htons(6000);
ser.sin_addr.s_addr=inet_addr("127.0.0.1");
int falg=connet(sockfd,(struct sockaddr *)&ser,sizeof(ser));//系统返回一个socket ser指定服务器地址
assert(flag!=-1);
char recvbuff[128]={0};
char sendbuff[128]={0};
while(1)
{
printf("please input data:");
scanf("%s",sendbuff);//scanf不能发送有空格的字符串 所以这里最好用gets
send(sockfd,sendbuff,strlen(sendbuff)+1,0);
recv(sockfd,recvbuff,128,0);
printf("ser:%s",recvbuff);
}
close(sockfd);
}
TCP通讯方式示例代码
猜你喜欢
转载自blog.csdn.net/wm06260514/article/details/84073614
今日推荐
周排行