//linux環境
//server.c
#include<sys/socket.h>#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<netinet/in.h>
#define PORT 5000
#define BUFFER_SIZE 1024
#define MAX_QUE_CONN_NM 5
int main()
{
struct sockaddr_in server_sockaddr,client_sockaddr;
int sin_size,recvbytes;
int fd,client_fd;
char buf[BUFFER_SIZE];
/*build socket*/
if((fd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("Create Socket Error!");
exit(1);
}
printf("\nSocket id=%d\n",fd);
/*set sockaddr_in struct parameters*/
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(PORT);
server_sockaddr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_sockaddr.sin_zero),8);
int i=1;
setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
if(bind(fd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1)
{
printf("\nbind Error\n");
exit(1);
}
if(listen(fd,MAX_QUE_CONN_NM)==-1)
{
printf("\n Listen Error!\n");
exit(1);
}
if((client_fd=accept(fd,(struct sockaddr*)&client_sockaddr,&sin_size))==-1)
{
printf("accept error");
exit(1);
}
memset(buf,0,sizeof(buf));
if((recvbytes=recv(client_fd,buf,BUFFER_SIZE,0))==-1)
{
printf("Recv Error");
exit(1);
}
printf("\nReceived a Msg:%s\n",buf);
close(fd);
exit(0);
}
//client.c
#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<netinet/in.h>
#define PORT 5000
#define BUFFER_SIZE 1024
int main(int argc,char *argv[])
{
int fd,sendbytes;
char buf[BUFFER_SIZE];
struct sockaddr_in serv_addr;
if(argc < 2)
{
printf("Error USAGE\n");
exit(1);
}
memset(buf,0,sizeof(buf));
sprintf(buf,"%s",argv[1]);
if((fd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("Create Error!");
exit(1);
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
bzero(&(serv_addr.sin_zero),8);
if(connect(fd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)
{
printf("Connect error!");
exit(1);
}
if((sendbytes=send(fd,buf,strlen(buf),0))==-1)
{
printf("Send error");
exit(1);
}
close(fd);
exit(0);
}