91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

linux c tcp socket 多線程 簡單聊天室 ,服務器端負責轉發,代碼很簡陋有待改進

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#define?BUFF_SIZE?1024
/*
* ./tcpclienttest?[hostname]?[port]//三個參數程序名算一個參數[]表示可以輸也可不輸
*/
int?main(int?argcchar?*argv[])
{
int?sockfd;
int?rtncount=0;
struct?sockaddr_in?servip;
char?*hostip;
unsigned?short?port;
char?buff[BUFF_SIZE];
char?name[20];
char?message[BUFF_SIZE];
int?recvlen=0sendlen;
int?msglen=0;//message長度
struct?hostent?*host;

fd_set?rdfd;
int?maxfd;
struct?timeval?tv;

if(argc<2)
{
hostip=“localhost“;//服務器地址,不輸如服務器ip的話默認本機
port=8080;
}
else?if(argc==2)
{
port=8080;
}
else
{
hostip=argv[1];
port=atoi(argv[2]);//atoi()字符串轉int
}
printf(“will?connect?%s:%d\n“hostipport);

if((host=gethostbyname(hostip))==NULL)
{
perror(“gethostbyname“);
exit(1);
}
sockfd=socket(AF_INETSOCK_STREAM0);
if(sockfd==-1)
{
perror(“socket\n“);
exit(1);
}

bzero(&servipsizeof(struct?sockaddr_in));
servip.sin_family=AF_INET;
servip.sin_port=htons(port);
servip.sin_addr=*((struct?in_addr?*)host->h_addr);
//#define?h_addr?h_addr_list[0]char**h_addr_list#include


rtn=connect(sockfd(struct?sockaddr?*)&servipsizeof(servip));
if(rtn==-1)
{
printf(“connect?to?%s:%d?fail.\n“(char?*)inet_ntoa(servip.sin_addr)
ntohs(servip.sin_port));
perror(“connect\n“);
close(sockfd);
exit(1);
}
printf(“connect?to?%s:%d?success.\n“(char?*)inet_ntoa(servip.sin_addr)
ntohs(servip.sin_port));
strcpy(name“client-1“);
sendlen=send(sockfdname200);
if(sendlen==-1)
{
perror(“send?name\n“);
close(sockfd);
exit(1);
}

while(1)
{
bzero(buffBUFF_SIZE); //清空發送緩沖區
bzero(messageBUFF_SIZE);//清空接收緩沖區
//gets(buff);

FD_ZERO(&rdfd);
FD_SET(0&rdfd);
FD_SET(sockfd&rdfd);

if(sockfd>maxfd)
{
maxfd=sockfd;
}

tv.tv_sec=0;
tv.tv_usec=0;

rtn=select(maxfd+1&rdfdNULLNULLNULL);
//printf(“select?return:?%d\n“rtn);

if(FD_ISSET(0&rdfd))
{
recvlen=read(0buffBUFF_SIZE);//從鍵盤輸入字符?存到?buff
if(recvlen>0)
{
sendlen=send(sockfdbuffBUFF_SIZE0);
if(sendlen==-1)
{
perror(“send?message\n“);
break;
}
}
}

recvlen=recv(sockfdmessageBUFF_SIZE0);
if(recvlen==-1)
{
perror(“recv?message\n“);
break;
}

printf(“%s\n“message);
}
close(sockfd);
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????.......??????2520??2012-01-02?00:39??簡單聊天室\clientroom.c

????.......??????3683??2012-01-02?00:41??簡單聊天室\serverroom.c

????I..D...?????????0??2012-01-02?00:44??簡單聊天室

-----------?---------??----------?-----??----

?????????????????6203????????????????????3


評論

共有 條評論