server.c
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <stdio.h>
#include <errno.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define SERVADDR "192.168.137.81"
#define SERVPORT 2000
int main(int argc, char* argv[]){
int listenfd ,connfd;
char recv_buf[100];
struct sockaddr_in servaddr ,cliaddr;
socklen_t servaddr_len, cliaddr_len;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(SERVADDR);
servaddr.sin_port = htons(SERVPORT);
// Create a socket
listenfd = socket(AF_INET, SOCK_STREAM, 0);
if(listenfd ==-1){
perror("listenfd failed");
return -1;
}
//the socket binding ip
servaddr_len = sizeof(servaddr);
if(bind(listenfd,(const struct sockaddr*)&servaddr,servaddr_len) ==-1){
perror("bind failed");
return -1;
}
for(;;){
//listen on the socket
if(listen(listenfd,3)==-1){
perror("listen faile");
return -1;
}
//accept the data packet
connfd = accept(listenfd,(struct sockaddr *)&cliaddr,(socklen_t*)&cliaddr_len);
if(connfd == -1){
perror("accpet failed");
return -1;
}
//receiving packets
if(recvfrom(connfd,recv_buf,(size_t)sizeof(recv_buf), 0, (struct sockaddr *)&cliaddr,(socklen_t*)&(cliaddr_len))==-1){
perror("recvfrom failed");
return -1;
}
//output characters
puts(recv_buf);
memset(&recv_buf,0,sizeof(recv_buf));
}
return 0;
}
client.c
/*
* tcp c/s 通信
* time
* author
*/
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <stdio.h>
#include <errno.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define SERVADDR "192.168.137.81"
#define SERVPORT 2000
int main(int agrc, char* agrv[]){
int sockfd ,sendto_len;
char buf[100] = "hello server";
struct sockaddr_in servaddr;
memset(&servaddr,0,sizeof(servaddr));
socklen_t servaddr_len;
servaddr.sin_addr.s_addr = inet_addr(SERVADDR);
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERVPORT);
//create a socket
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd ==-1){
perror("socket failed");
return -1;
}
// connect the tcp server
servaddr_len = sizeof(servaddr);
if(connect(sockfd,(const struct sockaddr*)&servaddr,(socklen_t)servaddr_len)==-1){
perror("connecet failed");
return -1;
}
// send a datagram
sendto_len = sendto(sockfd,buf,strlen(buf),0,(const struct sockaddr*)&servaddr,(socklen_t)servaddr_len);
if(sendto_len ==-1){
perror("sendto faile");
return -1;
}
close(sockfd);
return 0;
}