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

資源簡(jiǎn)介

Linux網(wǎng)絡(luò)編程(四)——epoll+多線程實(shí)現(xiàn)簡(jiǎn)單的聊天(linux 服務(wù)器端 windows客戶端)

資源截圖

代碼片段和文件信息

#define?_CRT_SECURE_NO_WARNINGS
#include?
#include?
#include?
#include?
#include??
#define?BUF_SIZE?1000
#define?NAME_SIZE?20

#pragma?comment(lib?“ws2_32.lib“)??//加載?ws2_32.dll??

unsigned?WINAPI?SendMsg(void?*?arg);//發(fā)送信息函數(shù)
unsigned?WINAPI?RecvMsg(void?*?arg);//接受信息函數(shù)
void?ErrorHandling(char?*?msg);//錯(cuò)誤返回函數(shù)

int?haveread?=?0;
char?NAME[50];//[名字]
char?msg[BUF_SIZE];//信息

int?main(int?argc?char?*argv[])
{

printf(“請(qǐng)輸入網(wǎng)名:“);
scanf(“%s“?NAME);
WSADATA?wsaData;
SOCKET?hSock;
SOCKADDR_IN?servAdr;
HANDLE?hSndThread?hRcvThread;
if?(WSAStartup(MAKEWORD(2?2)?&wsaData)?!=?0)
ErrorHandling(“WSAStartup()?error!“);

hSock?=?socket(PF_INET?SOCK_STREAM?0);
memset(&servAdr?0?sizeof(servAdr));
servAdr.sin_family?=?AF_INET;
servAdr.sin_addr.s_addr?=?inet_addr(“192.168.3.122“);
servAdr.sin_port?=?htons(1234);

if?(connect(hSock?(SOCKADDR*)&servAdr?sizeof(servAdr))?==?SOCKET_ERROR)
ErrorHandling(“connect()?error“);

puts(“Welcome?to?joining?our?chatting?room!\n“);
hSndThread?=
(HANDLE)_beginthreadex(NULL?0?SendMsg?(void*)&hSock?0?NULL);//寫線程
hRcvThread?=
(HANDLE)_beginthreadex(NULL?0?RecvMsg?(void*)&hSock?0?NULL);//讀線程

WaitForSingleobject(hSndThread?INFINITE);//等待線程結(jié)束
WaitForSingleobject(hRcvThread?INFINITE);
closesocket(hSock);
WSACleanup();
system(“pause“);
return?0;
}

unsigned?WINAPI?SendMsg(void?*?arg)???//?send?thread?main
{
SOCKET?sock?=?*((SOCKET*)arg);
char?name_msg[NAME_SIZE?+?BUF_SIZE];
char?padd[2];
fgets(padd?2?stdin);//多余的‘\n‘
printf(“\n?send?message:“);
while?(1)
{
{
fgets(msg?BUF_SIZE?stdin);
if?(!strcmp(msg?“q\n“)?||?!strcmp(msg?“Q\n“))
{
closesocket(sock);
exit(0);
}
sprintf(name_msg?“[%s]?%s“?NAME?msg);
int?result;
result?=?send(sock?name_msg?strlen(name_msg)?0);
if?(result?==?-1)return?-1;//發(fā)送錯(cuò)誤
}
}
return?NULL;
}

unsigned?WINAPI?RecvMsg(void?*?arg)??//?read?thread?main
{
SOCKET?sock?=?*((SOCKET*)arg);
char?name_msg[NAME_SIZE?+?BUF_SIZE];
int?str_len?=?0;
while?(1)
{
{
str_len?=?recv(sock?name_msg?NAME_SIZE?+?BUF_SIZE?-?1?0);
if?(str_len?==?-1)//讀取錯(cuò)誤
return?-1;
if?(str_len?==?0)return?0;//讀取結(jié)束
name_msg[str_len]?=?‘\0‘;
printf(“\n“);
strcat(name_msg?“\n“);
fputs(name_msg?stdout);
printf(“?send?message:“);
fflush(stdout);
memset(name_msg?0?sizeof(char));
}
}
return?NULL;
}

void?ErrorHandling(char?*?msg)
{
fputs(msg?stderr);
fputc(‘\n‘?stderr);
exit(1);
}

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3536??2017-06-13?14:38??服務(wù)器端.cpp
?????文件????????2683??2017-06-12?15:09??客戶端.cpp

評(píng)論

共有 條評(píng)論

相關(guān)資源