TCP-Server.c
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#define PORT 8080
#define IP "10.243.24.55"
int main()
{
int socket_ser =-1,sockt_opt=1;
int client_fd = -1;
int result=0;
int stream_len =0;
struct sockaddr_in socket_adr;
struct sockaddr_in client_adr;
char buffer[128]={0};
char *message;
pid_t pid;
/*tcp stream socket*/
socket_ser= socket(AF_INET,SOCKET_STREAM,0);
/*set sockect_ser to multiple clients*/
if( setsockopt(socket_ser, SOL_SOCKET, SO_REUSEADDR, (char *)&sockt_opt, sizeof(sockt_opt)) < 0 )
{
printf("set multiple client error \n") ;
}
memset(&socket_adr,0, sizeof(socket_adr));
socket_adr.sin_family = AF_INET;
socket_adr.sin_port = htons(PORT);
socket_adr.sin_addr.s_addr= inet_addr(IP);
result = bind (socket_ser,(struct sockaddr*)(&socket_adr),sizeof(socket_adr));
if(result<0)
{
printf("could not bind the ip\n");
shutdown(socket_ser, SHUT_RDWR);
close(socket_ser);
socket_ser = -1;
return -1;
}
else
{
int listen_result=0;
listen_result= listen(socket_ser,128);
if(listen_result < 0)
{
printf("could not listen ");
shutdown(socket_ser, SHUT_RDWR);
close(socket_ser);
socket_ser = -1;
return -1;
}
socklen_t cli_addr_size= sizeof(client_adr);
message = "server received message";
while(1)
{
client_fd= accept(socket_server,&client_adr,&cli_addr_size);
pid=fork();
if(pid == 0)
{
close(socket_fd);
stream_len= recv(client_fd, buffer,128,0);
if(stream_len >0)
{
printf("received client message %s\n",buffer);
send(client_fd,message,strlen(message),0);
}
close(client_fd);
memset(buffer,0,128);
}
else if(pid >0)
{
close(client_fd);
}
}
printf("close socket server \n");
shutdown(socket_ser, SHUT_RDWR);
close(socket_ser);
return 0;
}
}
TCP-Client.c
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
int Connect_server(int argc, char* agrv[])
{
char *ip;
char *port;
int server =-1;
int connected =0;
int count =100;
char server_reply[128]={0};
struct sockaddr_in socket_adr;
ip = getenv("IP");
port = getenv("PORT");
if(ip&port)
{
server= socket(AF_INET,SOCKET_STREAM,0);
memset(&socket_adr,0, sizeof(socket_adr));
socket_adr.sin_family = AF_INET;
socket_adr.sin_port = ip;
socket_adr.sin_addr.s_addr= port;
connected = connect(server,(struct sockaddr*)(&socket_adr),sizeof(socket_adr));
if(connected < 0)
{
printf("can't connect to server\n");
close(server);
return -1;
}
while(count>0)
{
if(send(server, count, 32, 0)<0)
{
printf("send message fail \n");
return -1;
}
if(recv(server, server_reply, 128, 0)<0)
{
printf("get server reply failed \n");
}
else
{
printf("get server reply successfully \n");
}
sleep (1000); //every 1s send message to server
count--;
}
shutdown(server, SHUT_RDWR);
close(server);
return 0;
}