Socket 聊天小程式

2022-09-21 12:36:08 字數 2872 閱讀 6746

伺服器端** server.c

#include #include 

#include

#include

#include

#include

#include

in.h>#include

#include

#include

#define buflen 1024

#define port 6666

#define listnum 20

intmain()

else

printf(

"socket create success!\n

");

memset(&s_addr,0,sizeof

(s_addr));

s_addr.sin_family =af_inet;

s_addr.sin_port =htons(port);

s_addr.sin_addr.s_addr =htons(inaddr_any);

/*把位址和埠幫定到套接字上

*/if((bind(sockfd, (struct sockaddr*) &s_addr,sizeof(struct sockaddr))) == -1

)else

printf(

"bind success!\n

");

/*偵聽本地埠

*/if(listen(sockfd,listnum) == -1

)else

printf(

"the server is listening!\n

");

while(1

)else

printf(

"正在與您聊天的客戶端是:%s: %d\n

",inet_ntoa(c_addr.sin_addr),ntohs(c_addr.sin_port));

while(1

)else

if(retval == 0

)else

len = send(newfd,buf,strlen(buf),0

);

if(len > 0

) printf(

"\t訊息傳送成功:%s\n

",buf);

else

} /*客戶端發來了訊息

*/if(fd_isset(newfd, &rfds))

} }

} /*關閉聊天的套接字

*/close(newfd);

/*是否退出伺服器

*/printf(

"伺服器是否退出程式:y->是;n->否?

");

bzero(buf, buflen);

fgets(buf,buflen, stdin);

if(!strncasecmp(buf,"

y",1

)) }

/*關閉伺服器的套接字

*/close(sockfd);

return0;

}

客戶端** client.c :

#include #include 

#include

#include

#include

#include

#include

in.h>#include

#include

#include

#define buflen 1024

#define port 6666

int main(int argc, char **ar**)

else

printf(

"socket create success!\n");

/*設定伺服器ip

*/memset(&s_addr,0,sizeof

(s_addr));

s_addr.sin_family =af_inet;

s_addr.sin_port =htons(port);

if (inet_aton(ar**[1], (struct in_addr *)&s_addr.sin_addr.s_addr) == 0

)

/*開始連線伺服器

*/if(connect(sockfd,(struct sockaddr*)&s_addr,sizeof(struct sockaddr)) == -1

)else

printf(

"conncet success!\n");

while(1

)else

if(retval == 0

)else

}/*使用者輸入資訊了,開始處理資訊並傳送

*/if(fd_isset(0, &rfds))

len = send(sockfd,buf,strlen(buf),0

);

if(len > 0

) printf(

"\t訊息傳送成功:%s\n

",buf);

else}}

}/*關閉連線

*/close(sockfd);

return0;

}

伺服器端截圖:

客戶端截圖:

非同步Socket寫聊天程式

socket 網路應用程式如同一般檔案 i o一樣在資料訪問未完成的時候,整個應用程式會停滯,直到網路操作完全成功為止。若是遇上不佳的網路環境,這種情形將會嚴重影響整個網路程式的運作。對於網路延遲,net 提供了自己的一組解決方法,非同步操作。socket 類提供的方法成員中包含一組專門用來進行非同...

簡單的socket聊天程式

伺服器 include include include include include include include include define port 18888 埠 define buflen 1024 快取區大小 define listennum 20 socket最大監聽數 int m...

socket程式設計之點對點聊天程式

p2psrv.c include include include include include include 解決父程序退出,子程序不退出 include include include include define err exit m do while 0 void handler int ...