亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? linux網(wǎng)絡(luò)編程一步一步學-同步聊天程序(14).txt

?? linux socket編程很好的學習文檔
?? TXT
字號:
Linux網(wǎng)絡(luò)編程一步一步學-同步聊天程序
關(guān)鍵詞: Linux    synchronous    socket    accept    chat                                           
服務(wù)器端源代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <unistd.h>
#include <arpa/inet.h>

#define MAXBUF 1024
/************關(guān)于本文檔********************************************
*filename: sync-server.c
*purpose: 演示網(wǎng)絡(luò)同步通訊,這是服務(wù)器端程序
*wrote by: zhoulifa(zhoulifa@163.com) 周立發(fā)(http://zhoulifa.bokee.com)
Linux愛好者 Linux知識傳播者 SOHO族 開發(fā)者 最擅長C語言
*date time:2007-01-25 20:26
*Note: 任何人可以任意復(fù)制代碼并運用這些文檔,當然包括你的商業(yè)用途
* 但請遵循GPL
*Thanks to: Google.com
*Hope:希望越來越多的人貢獻自己的力量,為科學技術(shù)發(fā)展出力
* 科技站在巨人的肩膀上進步更快!感謝有開源前輩的貢獻!
*********************************************************************/

int main(int argc, char **argv)
{
int sockfd, new_fd;
socklen_t len;
struct sockaddr_in my_addr, their_addr;
unsigned int myport, lisnum;
char buf[MAXBUF + 1];

if (argv[1])
myport = atoi(argv[1]);
else
myport = 7838;

if (argv[2])
lisnum = atoi(argv[2]);
else
lisnum = 2;

if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}

bzero(&my_addr, sizeof(my_addr));
my_addr.sin_family = PF_INET;
my_addr.sin_port = htons(myport);
if (argv[3])
my_addr.sin_addr.s_addr = inet_addr(argv[3]);
else
my_addr.sin_addr.s_addr = INADDR_ANY;

if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr))
== -1) {
perror("bind");
exit(1);
}

if (listen(sockfd, lisnum) == -1) {
perror("listen");
exit(1);
}

while (1) {
printf
("\n----等待新的連接到來開始新一輪聊天……\n");
len = sizeof(struct sockaddr);
if ((new_fd =
accept(sockfd, (struct sockaddr *) &their_addr,
&len)) == -1) {
perror("accept");
exit(errno);
} else
printf("server: got connection from %s, port %d, socket %d\n",
inet_ntoa(their_addr.sin_addr),
ntohs(their_addr.sin_port), new_fd);

/* 開始處理每個新連接上的數(shù)據(jù)收發(fā) */
while (1) {
bzero(buf, MAXBUF + 1);
printf("請輸入要發(fā)送給對方的消息:");
fgets(buf, MAXBUF, stdin);
if (!strncasecmp(buf, "quit", 4)) {
printf("自己請求終止聊天!\n");
break;
}
len = send(new_fd, buf, strlen(buf) - 1, 0);
if (len > 0)
printf
("消息:%s\t發(fā)送成功,共發(fā)送了%d個字節(jié)!\n",
buf, len);
else {
printf
("消息'%s'發(fā)送失敗!錯誤代碼是%d,錯誤信息是'%s'\n",
buf, errno, strerror(errno));
break;
}
bzero(buf, MAXBUF + 1);
/* 接收客戶端的消息 */
len = recv(new_fd, buf, MAXBUF, 0);
if (len > 0)
printf
("接收消息成功:'%s',共%d個字節(jié)的數(shù)據(jù)\n",
buf, len);
else {
if (len < 0)
printf
("消息接收失敗!錯誤代碼是%d,錯誤信息是'%s'\n",
errno, strerror(errno));
else
printf("對方退出了,聊天終止\n");
break;
}
}
close(new_fd);
/* 處理每個新連接上的數(shù)據(jù)收發(fā)結(jié)束 */
}

close(sockfd);
return 0;
}
 

客戶端源代碼如下:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <resolv.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

#define MAXBUF 1024
/************關(guān)于本文檔********************************************
// *filename: sync-client.c
*purpose: 演示網(wǎng)絡(luò)同步通訊,這是客戶端程序
*wrote by: zhoulifa(zhoulifa@163.com) 周立發(fā)(http://zhoulifa.bokee.com)
Linux愛好者 Linux知識傳播者 SOHO族 開發(fā)者 最擅長C語言
*date time:2007-01-25 20:32
*Note: 任何人可以任意復(fù)制代碼并運用這些文檔,當然包括你的商業(yè)用途
* 但請遵循GPL
*Thanks to: Google.com
*Hope:希望越來越多的人貢獻自己的力量,為科學技術(shù)發(fā)展出力
* 科技站在巨人的肩膀上進步更快!感謝有開源前輩的貢獻!
*********************************************************************/
int main(int argc, char **argv)
{
int sockfd, len;
struct sockaddr_in dest;
char buffer[MAXBUF + 1];

if (argc != 3) {
printf
("參數(shù)格式錯誤!正確用法如下:\n\t\t%s IP地址 端口\n\t比如:\t%s 127.0.0.1 80\n此程序用來從某個 IP 地址的服務(wù)器某個端口接收最多 MAXBUF 個字節(jié)的消息",
argv[0], argv[0]);
exit(0);
}
/* 創(chuàng)建一個 socket 用于 tcp 通信 */
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("Socket");
exit(errno);
}
printf("socket created\n");

/* 初始化服務(wù)器端(對方)的地址和端口信息 */
bzero(&dest, sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(atoi(argv[2]));
if (inet_aton(argv[1], (struct in_addr *) &dest.sin_addr.s_addr) == 0) {
perror(argv[1]);
exit(errno);
}
printf("address created\n");

/* 連接服務(wù)器 */
if (connect(sockfd, (struct sockaddr *) &dest, sizeof(dest)) != 0) {
perror("Connect ");
exit(errno);
}
printf("server connected\n");

while (1) {
/* 接收對方發(fā)過來的消息,最多接收 MAXBUF 個字節(jié) */
bzero(buffer, MAXBUF + 1);
/* 接收服務(wù)器來的消息 */
len = recv(sockfd, buffer, MAXBUF, 0);
if (len > 0)
printf("接收消息成功:'%s',共%d個字節(jié)的數(shù)據(jù)\n",
buffer, len);
else {
if (len < 0)
printf
("消息接收失敗!錯誤代碼是%d,錯誤信息是'%s'\n",
errno, strerror(errno));
else
printf("對方退出了,聊天終止!\n");
break;
}
bzero(buffer, MAXBUF + 1);
printf("請輸入要發(fā)送給對方的消息:");
fgets(buffer, MAXBUF, stdin);
if (!strncasecmp(buffer, "quit", 4)) {
printf("自己請求終止聊天!\n");
break;
}
/* 發(fā)消息給服務(wù)器 */
len = send(sockfd, buffer, strlen(buffer) - 1, 0);
if (len < 0) {
printf
("消息'%s'發(fā)送失敗!錯誤代碼是%d,錯誤信息是'%s'\n",
buffer, errno, strerror(errno));
break;
} else
printf
("消息:%s\t發(fā)送成功,共發(fā)送了%d個字節(jié)!\n",
buffer, len);
}
/* 關(guān)閉連接 */
close(sockfd);
return 0;
}
 


編譯程序用下列命令:
gcc -Wall sync-server.c -o server
gcc -Wall sync-client.c -o client

分別運行這兩個程序:
./server 7838 1
./client 127.0.0.1 7838

同步聊天過程如下:

1、服務(wù)端程序開啟
2、客戶端程序開啟(即客戶端連接服務(wù)器)
3、服務(wù)器端用戶輸入消息并發(fā)送給客戶端
4、客戶端收到消息,客戶端用戶輸入消息并發(fā)送給服務(wù)器端
5、服務(wù)器端收到消息,服務(wù)器端用戶輸入消息并發(fā)送給客戶端
6、任何一方退出當前聊天即終止一次聊天過程
7、服務(wù)器端繼續(xù)等待下一個人連接上來開始新的聊天過程
 

同步通訊,要求任何一方都必須按照順序操作,一收一發(fā)或一發(fā)一收

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月婷婷久久丁香| 国产美女视频91| 国产精品亚洲成人| 色婷婷av一区二区三区大白胸| 日韩一区二区免费视频| 一区二区三区中文在线观看| 国产精品资源在线观看| 欧美日韩国产高清一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 欧美日韩一区不卡| 久久久www成人免费无遮挡大片| 亚洲国产精品人人做人人爽| 成人综合婷婷国产精品久久| 精品久久久久久最新网址| 一区二区三区日韩精品视频| av在线不卡观看免费观看| 精品欧美一区二区久久| 日本视频在线一区| 欧美性视频一区二区三区| 中文字幕在线一区二区三区| 国产成人免费在线| 日韩欧美区一区二| 蜜臀国产一区二区三区在线播放| 日本国产一区二区| 亚洲久草在线视频| 色嗨嗨av一区二区三区| 亚洲欧洲一区二区三区| 成人av片在线观看| 国产精品福利一区| 99久久精品免费看国产免费软件| 国产婷婷色一区二区三区| 国内不卡的二区三区中文字幕| 欧美一区二区精品在线| 久久国产综合精品| 精品国产一区二区国模嫣然| 麻豆freexxxx性91精品| 欧美大胆一级视频| 久久av资源网| 国产亚洲精品7777| 粉嫩在线一区二区三区视频| 欧美激情艳妇裸体舞| 成人av在线看| 亚洲免费成人av| 欧美日韩一级片在线观看| 日韩电影在线免费观看| 欧美成人国产一区二区| 国产另类ts人妖一区二区| 久久精品夜色噜噜亚洲aⅴ| 成人妖精视频yjsp地址| √…a在线天堂一区| 欧美三级午夜理伦三级中视频| 午夜电影网一区| 欧美videos中文字幕| 国产精品综合视频| 亚洲精品视频观看| 欧美电影影音先锋| 国产乱一区二区| 亚洲免费在线播放| 欧美一级高清片在线观看| 国产精品一区二区在线观看不卡| 国产精品美女久久久久久久网站| 日本道免费精品一区二区三区| 亚洲mv大片欧洲mv大片精品| 337p日本欧洲亚洲大胆色噜噜| 成人国产精品免费观看| 午夜精品免费在线观看| 久久久久久日产精品| 一本大道综合伊人精品热热| 日韩—二三区免费观看av| 中文无字幕一区二区三区| 在线观看av一区二区| 久久不见久久见免费视频7| 中文字幕视频一区| 日韩欧美不卡在线观看视频| 成人av影院在线| 久久国产三级精品| 一区二区三区中文在线| 久久精品综合网| 欧美高清精品3d| av爱爱亚洲一区| 精品一区二区在线播放| 亚洲综合一二区| 中文字幕免费一区| 日韩视频一区二区三区在线播放| 99久久免费国产| 激情文学综合插| 图片区小说区国产精品视频| 1区2区3区国产精品| 2020国产成人综合网| 欧美私人免费视频| k8久久久一区二区三区| 国产一区在线看| 奇米在线7777在线精品| 亚洲精品日韩一| 中文天堂在线一区| 国产色一区二区| 精品久久五月天| 欧美日韩午夜在线| 在线欧美日韩国产| 99国产精品国产精品久久| 国产福利一区二区三区视频在线 | 久久一日本道色综合| 欧美精品免费视频| 欧美性做爰猛烈叫床潮| 91亚洲资源网| 99国产精品久久久| 成人av电影在线观看| 欧美视频一区二区| 成人一级视频在线观看| 国产黑丝在线一区二区三区| 精品一区二区三区不卡| 免费xxxx性欧美18vr| 日韩中文字幕麻豆| 午夜精品福利视频网站| 亚洲国产欧美在线| 亚洲国产日产av| 亚洲1区2区3区视频| 性做久久久久久久久| 午夜精品一区二区三区三上悠亚| 亚洲一区二区av在线| 亚洲电影视频在线| 日韩高清在线一区| 久久国产成人午夜av影院| 美女一区二区视频| 国产精品伊人色| www.66久久| 色婷婷狠狠综合| 欧美日韩国产区一| 日韩午夜在线观看视频| 精品久久一区二区三区| 国产色产综合产在线视频| 国产精品第五页| 亚洲精品国产a| 视频在线观看国产精品| 国产自产高清不卡| 成人午夜免费av| 欧美在线观看视频在线| 日韩视频在线一区二区| 国产欧美一区视频| 亚洲精品国产无天堂网2021| 丝袜美腿成人在线| 国产精品一区二区免费不卡| 不卡的电影网站| 欧美日韩国产一区| 国产肉丝袜一区二区| 亚洲精品中文字幕乱码三区| 日韩制服丝袜先锋影音| 国产一区二区三区四| 91同城在线观看| 日韩精品一区二区三区视频播放| 中文字幕不卡在线观看| 亚洲风情在线资源站| 欧美三级电影精品| 精品国产三级电影在线观看| 亚洲欧洲日韩一区二区三区| 婷婷综合另类小说色区| 国产91清纯白嫩初高中在线观看 | 亚洲精品伦理在线| 国产呦精品一区二区三区网站| 色综合天天综合在线视频| 69久久夜色精品国产69蝌蚪网| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美大片在线观看| 依依成人精品视频| 国产精品自拍网站| 欧美撒尿777hd撒尿| 国产亚洲婷婷免费| 日韩av电影天堂| 91久久线看在观草草青青| 欧美不卡一区二区三区四区| 一区二区三区高清| 成人小视频在线| 精品国产乱码久久久久久牛牛 | 日韩在线播放一区二区| 99在线精品观看| 2017欧美狠狠色| 欧美aaaaa成人免费观看视频| 色综合久久久久| 国产精品水嫩水嫩| 国产精一品亚洲二区在线视频| 91精品欧美福利在线观看| 亚洲精品成人少妇| av日韩在线网站| 国产日韩欧美电影| 国产一区二区在线免费观看| 91.com视频| 午夜伦欧美伦电影理论片| 91搞黄在线观看| 国产精品久久久久久福利一牛影视| 麻豆极品一区二区三区| 欧美猛男超大videosgay| 一区二区国产盗摄色噜噜| gogogo免费视频观看亚洲一| 久久精品日产第一区二区三区高清版 | 狠狠色丁香婷婷综合| 日韩欧美亚洲一区二区| 秋霞成人午夜伦在线观看| 91精品国产手机| 首页亚洲欧美制服丝腿| 欧美肥胖老妇做爰|