客户端 #include
#include
#include
#include
#include
#include
#include
#include
#define ServerIP "192.168.43.8"
#define ServerPort 27015
int main()
{
int ret;
char sendbuf[128];
bzero(sendbuf,sizeof(sendbuf));
struct sockaddr_in addrServer;
bzero(&addrServer,sizeof(addrServer));
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(ServerPort);
inet_pton(AF_INET,ServerIP,&addrServer.sin_addr.s_addr);
//创建socket
int clientfd = socket(AF_INET,SOCK_STREAM,0);
if(clientfd ==-1){
printf("socket error\n");
return -1;
}
//发起连接请求
ret = connect(clientfd,(struct sockaddr*)&addrServer,sizeof(addrServer));
if(ret == -1){
printf("connect error\n");
close(clientfd);
return -1;
}
printf("connect successful.....\n");
printf("Please input sendbuf:");
scanf("%s",sendbuf);
//发送数据
ret = send(clientfd,sendbuf,sizeof(sendbuf),0);
if(ret > 0){
printf("host send:%s\n",sendbuf);
}
close(clientfd);
return 0;
} 服务器端 #include
#include
#include
#include
#include
#include
#include
#define DEF_PORT 27015
int main()
{
int res;
char recvbuf[1024];
char ip[16];
bzero(recvbuf,sizeof(recvbuf));
bzero(ip,sizeof(ip));
struct sockaddr_in addrServer;
bzero(&addrServer,sizeof(addrServer));
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(DEF_PORT);
addrServer.sin_addr.s_addr = htonl(INADDR_ANY);
//创建socket
int serverfd = socket(AF_INET,SOCK_STREAM,0);
if(serverfd == -1)
{
printf("socket error\n");
return -1;
}
//绑定
res = bind(serverfd,(struct sockaddr*)&addrServer,sizeof(addrServer));
if(res == -1){
printf("bind error\n");
close(serverfd);
return -1;
}
//监听连接
res = listen(serverfd,128);
if(res == -1){
printf("listen error\n");
close(serverfd);
return -1;
}
printf("Tcp server is running...\n");
struct sockaddr_in addrClient;
bzero(&addrClient,sizeof(addrClient));
int addrClient_size = sizeof(addrClient);
int recvlen = sizeof(recvbuf);
int clientfd;
while(1){
//等到客户端建立连接
clientfd = accept(serverfd,(struct sockaddr*)&addrClient,&addrClient_size);
if(clientfd == -1){
printf("accept error\n");
close(serverfd);
return -1;
}
printf("Connect client ip is:%s\n",inet_ntop(AF_INET,&addrClient.sin_addr.s_addr,ip,16));
printf("Connect cient port is: %d\n",ntohs(addrClient.sin_port));
while(1){
bzero(recvbuf,sizeof(recvbuf));
res = recv(clientfd,recvbuf,sizeof(recvbuf),0);
if(res > 0)
{
printf("data is:%s\n",recvbuf);
continue;
}
else if(res == 0){
printf("client normal closed..\n");
close(clientfd);
break;
}else{
printf("recv error\n");
close(clientfd);
close(serverfd);
}
}
}
close(clientfd);
close(serverfd);
return 0;
} 测试结果