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

  • 大小: 33KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-15
  • 語言: 其他
  • 標簽: linux??網絡編程??

資源簡介

linux運行的聊天室程序,多客戶端登錄后,將任意客戶端數據發送給其他登錄的客戶端

資源截圖

代碼片段和文件信息

#include?“chat_room_client.h“

int?main()
{
int?sfd;

struct?sockaddr_in?addr_server;
bzero(&addr_server?sizeof(addr_server));
addr_server.sin_family?=?AF_INET;
addr_server.sin_port?=?htons(MY_PORT);
addr_server.sin_addr.s_addr?=?htonl(INADDR_ANY);

sfd?=?socket(AF_INET?SOCK_STREAM?0);
if?(sfd? return?-1;
if?(connect(sfd?(struct?sockaddr*)&addr_server?sizeof(addr_server))? close(sfd);
return?-1;
}
printf(“connect?is?success\n“);

/*注冊文件描述符,0用于輸出,1用于讀socket上的內容*/
pollfd?fds[2];
fds[0].fd?=?0;
fds[0].events?=?POLLIN?|?POLLOUT;
fds[0].revents?=?0;


fds[1].fd?=?sfd;
fds[1].events?=?POLLIN?|?POLLRDHUP;?//服務器關閉連接時,設置為POLLRDHUP
fds[1].revents?=?0;

char?read_buf[BUFFER_SIZE];?//64
/*準備兩個管道*/
int?pipefd[2];
int?ret?=?pipe(pipefd);
if?(ret? return?-1;
while?(1)
{
ret?=?poll(fds?2?-1);
if?(ret? printf(“poll()?error\n“);
return?-1;
}
/*服務器關閉*/
if?(fds[1].revents?&?POLLRDHUP)?{
printf(“server?close?the?connect!\n“);
break;
}
/*socket緩沖區有數據可讀*/
if?(fds[1].revents?&?POLLIN)?{
memset(read_buf?‘\0‘?BUFFER_SIZE);
recv(fds[1].fd?read_buf?BUFFER_SIZE?-?1?0);
printf(“%s\n“?read_buf);
}
/*客戶端用戶輸入數據使用splice函數,實現零拷貝*/
/*ssize_t?splice(int?fd_inloff_t*?off_tint?fd_outloff_t*?off_outsize_t?lenunsigned?int?flags);
fd_in:待輸入數據的文件描述符.

off_t:如果fd_in是一個管道文件描述符那么off_t參數必須是NULL表示從數據流的當前偏移位置讀入;如果fd_in不是一個管道文件描述符(例如socket),則它將指出具體的偏移位置.

?len:指定移動數據的長度.

flags:則控制數據如何移動,它可以被設置為下表中值的按位異或.*/
if?(fds[0].revents?&?POLLIN)?{
ret?=?splice(0?NULL?pipefd[1]?NULL?32768?SPLICE_F_MORE?|?SPLICE_F_MOVE); //0是標準輸入的文件描述符
ret?=?splice(pipefd[0]?NULL?sfd?NULL?32768?SPLICE_F_MORE?|?SPLICE_F_MOVE);
//為什么不直接將0->sfd? 因為使用splice函數時,fd_in和fd_out必須至少有一個管道文件描述符
}
}
close(sfd);
return?0;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-06-03?09:50??char_room\
?????文件????????9153??2019-06-03?09:50??char_room\chat_client
?????文件????????2115??2019-06-03?09:50??char_room\chat_room_client.cpp
?????文件?????????324??2019-06-03?09:50??char_room\chat_room_client.h
?????文件????????2952??2019-06-03?09:50??char_room\chat_room_client.o
?????文件????????5965??2019-06-03?09:50??char_room\chat_room_server.cpp
?????文件?????????582??2019-06-03?09:50??char_room\chat_room_server.h
?????文件????????6960??2019-06-03?09:50??char_room\chat_room_server.o
?????文件???????13819??2019-06-03?09:50??char_room\chat_server
?????文件??????258048??2019-06-03?09:50??char_room\core
?????文件?????????364??2019-06-03?09:50??char_room\makefile

評論

共有 條評論