基于TCP协议的客户端代码
/*
************************************************
*Name : Linux Client <span style="white-space:pre"> </span>*
*Date : 2014-11-10 <span style="white-space:pre"> </span>*
*Author : marksman<span style="white-space:pre"> </span> *
*Aim : Linux Client can send and receive <span style="white-space:pre"> </span>*
*<span style="white-space:pre"> </span>message.<span style="white-space:pre"> </span> *
************************************************
*/
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
int main(int argc,char *argv[])
{
int socketfd,receive_socket;
struct sockaddr_in s_add,c_add;
unsigned short portnum = 0x22B8;
int len;
char buf[100];
/*
*Create the socket
*/
if((socketfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("Socket create error! \n");
exit(1);
}
/*
*set the address format
*/
bzero(&s_add,sizeof(struct sockaddr_in));
s_add.sin_family = AF_INET;
s_add.sin_addr.s_addr = inet_addr("127.0.0.1");//change the string to 32-bit internet byte.
s_add.sin_port=htons(portnum);
if (connect(socketfd,(struct sockaddr *)(&s_add),sizeof(struct sockaddr))<0)
{
printf("Connect failure!\n");
return -1;
}
else
printf("Connect Success!\n");
/*
*Using the loop to send and receive the message.
*/
while(1)
{
memset(buf,'\0',100);
printf("Input message to send: ");
fgets(buf,100,stdin);
len=send(socketfd,buf,strlen(buf)-1,0);
if(len<0)
{
printf("send error!\n");
exit(1);
}
else
{
printf("Send Success! send is : %s \n",buf);
}
memset(buf,'\0',100);
len=recv(socketfd,buf,100,0);
if(len<0)
{
printf("recv error!\n");
exit(1);
}
else if(0 == len)
{
printf("client quit!\n");
exit(1);
}
else
{
printf("receive message is : %s\n",buf);
}
printf("--------------------------\n");
}
close(socketfd);
}
基于TCP协议的服务器代码
/*
************************************************
*Name : Linux Server <span style="white-space:pre"> </span>*
*Date : 2014-11-10 <span style="white-space:pre"> </span>*
*Author : marksman <span style="white-space:pre"> </span>*
*Aim : Linux Server can send and receive <span style="white-space:pre"> </span>*
*<span style="white-space:pre"> </span>message.It is atom system about <span style="white-space:pre"> </span>*
* Instant Messaging system. <span style="white-space:pre"> </span>*
************************************************
*/
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <sys/socket.h>
int main(int argc,char *argv[])
{
int socketfd_listen,socketfd_connect;
struct sockaddr_in server_addr,client_addr;
unsigned short portnum = 0x22B8;
int len ;
char buf[100];
/*
*Create the socket
*/
if((socketfd_listen=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("Socket create error! \n");
exit(1);
}
/*
*set the address format
*/
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
server_addr.sin_port=htons(portnum);
if(bind(socketfd_listen,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))<0)
{
printf("bind failure!\n");
return -1;
}
printf("bind Success!\n");
if(listen(socketfd_listen,5)<0)
{
printf("Listen failure!\n");
return -1;
}
len=sizeof(struct sockaddr);
socketfd_connect = accept(socketfd_listen, (struct sockaddr *)(&client_addr), &len);
if(socketfd_connect<0)
{
printf("accept fail !\n");
return -1;
}
/*
*Using the loop to send and receive the message.
*/
while(1)
{
memset(buf,0,100);
len=recv(socketfd_connect,buf,100,0);
if(len<0)
{
printf("recv error!\n");
exit(1);
}
else if(0 == len)
{
printf("the client quit!\n");
break;
}
else
{
printf("receive message is : %s \n",buf);
}
//memset(buf,0,100);
//printf("Input message to send : ");
//fgets(buf,100,stdin);
len=send(socketfd_connect,buf,strlen(buf)-1,0);
if(len<0)
{
printf("Send error!\n");
exit(1);
}
else
{
printf("Send succeed send : %s \n",buf);
}
printf("------------------------\n");
}
close(socketfd_listen);
close(socketfd_connect);
return 0;
}
函数详细说明参考《UNIX环境高级编程第二版》
望网友批评指正