//tcp通信服务器端
#include<stdio.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
//1.创建socket
int lfd = socket(AF_INET,SOCK_STREAM,0);
//2.绑定ip和port
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);
saddr.sin_addr.s_addr = INADDR_ANY;
bind(lfd,(struct sockaddr*)&saddr,sizeof(saddr));
//设置监听
listen(lfd,5);
//接受客服端的链接
struct sockaddr_in caddr;
socklen_t len = sizeof(caddr);
int cfd = accept(lfd,(struct sockaddr *)&caddr,&len);
//建立链接成功
char ip[16] = {0};
inet_ntop(AF_INET,&caddr.sin_addr.s_addr,ip,sizeof(ip));
unsigned short cport = ntohs(caddr.sin_port);
printf("client ip is: %s\n client prot is: %d\n",ip,cport);
//读写数据
char buf[1024];
while(1)
{
int count = read(cfd,buf,sizeof(buf));
if(count == -1)
{
perror("read");
exit(-1);
}else if(count>0)
{
printf("recv date:%s\n",buf);
}else if(count == 0)
{
printf("client close!\n");
break;
}
write(cfd,"ok",2);
}
//关闭链接
close(lfd);
close(cfd);
return 0;
}
//tcp通信客户端
#include<stdio.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
int main()
{
//1.创建socket
int fd = socket(AF_INET,SOCK_STREAM,0);
if(fd == -1)
{
perror("socket");
exit(-1);
}
//2.建立链接
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);
inet_pton(AF_INET,"127.0.0.1",&saddr.sin_addr.s_addr);
int ret = connect(fd,(struct sockaddr *)&saddr,sizeof(saddr));
if(ret == -1)
{
perror("connect");
exit(-1);
}
//连接成功,进行通信
//写读数据
while(1)
{
sleep(3);
char buf[1024] = {"hello i am client"};
write(fd,buf,sizeof(buf));
memset(buf,0,1024);
int count = read(fd,buf,sizeof(buf));
if(count == -1)
{
perror("read");
exit(-1);
}else if(count>0)
{
printf("recv date:%s\n",buf);
}else if(count == 0)
{
printf("server close!\n");
break;
}
}
//关闭文件描述符
close(fd);
return 0;
}