日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > 一起talk C栗子吧(第一百五十九回:C語言實例--基于AF_INET域的數(shù)據(jù)報套接字通信)

一起talk C栗子吧(第一百五十九回:C語言實例--基于AF_INET域的數(shù)據(jù)報套接字通信)

來源:程序員人生   發(fā)布時間:2016-06-06 17:08:17 閱讀次數(shù):2451次

各位看官們,大家好,上1回中我們說的是基于AF_INET域的流套接字通訊的例子,這1回我們說的例子是:基于AF_INET域的數(shù)據(jù)報套接字通訊 。閑話休提,言歸正轉(zhuǎn)。讓我們1起talk C栗子吧!


看官們,我們在上1回中1起制作了我們的第3道佳肴是:基于AF_INET域的流套接字通訊。今天,我將和大家1起制作第4道佳肴:基于AF_INET域的數(shù)據(jù)報套接字通訊。

  • 制作第4道佳肴的菜譜:數(shù)據(jù)報套接字進程。
  • 制作第4道佳肴的食材:數(shù)據(jù)報套接字的接口,套接字屬性,套接字地址信息。

看官們,以上的內(nèi)容,我們在前面章回中都詳細(xì)介紹過,如果大家忘記的話,可以參考前面的內(nèi)容,重點是第1百4108回的內(nèi)容,由于這是我們的菜譜。在食材中最麻煩是套接字地址信息,大家可以參考1百5105回中的例子。多說無益,我們通過具體的代碼來演示 。

服務(wù)器真?zhèn)€通訊進程及其代碼

//1.設(shè)置服務(wù)器端套接字的屬性:域,類型和協(xié)議; char * host = "localhost"; //using localhost IP address:127.0.0.1 char * server = "1080"; //using port 1080, it must be more then 1024 struct addrinfo hints; struct addrinfo *result; struct sockaddr_in client_address; memset(&hints,0,sizeof(struct addrinfo)); result = NULL; hints.ai_flags = AI_NUMERICSERV; hints.ai_family = AF_INET; hints.ai_socktype = SOCK_DGRAM; //get address info ,it has all attribute of socket res = getaddrinfo(host,server,&hints,&result); //2. 創(chuàng)建服務(wù)器端套接字 server_fd = socket(result->ai_family,result->ai_socktype,result->ai_protocol); //3.把服務(wù)器真?zhèn)€套接字和服務(wù)器的地址綁定在1起 res = bind(server_fd,result->ai_addr,result->ai_addrlen); //4.通過套接字讀取數(shù)據(jù),這里使用的是recvfrom函數(shù); addr_len = 0; res = recvfrom(server_fd,buf,BUF_SIZE,0,(struct sockaddr *)&client_address,&addr_len); printf("[server] receiving data (%s) from client by socket\n",buf); //5.釋放套接字地址信息。這里沒有釋放套接字,由于在客戶端已釋放并且關(guān)閉通訊 if(result->ai_next) freeaddrinfo(result);

客戶真?zhèn)€通訊進程及其代碼

//1.設(shè)置客戶端套接字的屬性:域,類型和協(xié)議; char * host = "localhost"; //using localhost IP address:127.0.0.1 char * server = "1080"; //using port 1080, it must be more then 1024 struct addrinfo hints; struct addrinfo *result; memset(&hints,0,sizeof(struct addrinfo)); result = NULL; hints.ai_flags = AI_NUMERICSERV; hints.ai_family = AF_INET; hints.ai_socktype = SOCK_DGRAM; //get address info ,it has all attribute of socket res = getaddrinfo(host,server,&hints,&result); //2.創(chuàng)建客戶端套接字; client_fd = socket(result->ai_family,result->ai_socktype,result->ai_protocol); //3.通過套接字發(fā)送數(shù)據(jù),這里我們使用的是sendto函數(shù); printf("[client] sending data (%s )to server by socket \n",buf); res = sendto(client_fd,buf,sizeof(buf),0,result->ai_addr,result->ai_addrlen); //4.釋放套接字,斷開客戶端與服務(wù)器真?zhèn)€通訊; if(result->ai_next) freeaddrinfo(result); res = close(client_fd);

看官們,以上是核心代碼,完全的代碼放到了我的資源中,大家可以點擊這里下載使用。

關(guān)于上面的代碼,我做1點扼要的說明。我們首先獲得套接字地址的信息,然后才創(chuàng)建套接字。這和前1回的步驟相同,基中人緣由也相同,所以就不作詳細(xì)介紹了。在這里,我們使用了getaddrinfo函數(shù)的結(jié)果,這類方法可以提高代碼的移植性。這類方法,也使用在了bind函數(shù)和sendto函數(shù)中。代碼中其它的內(nèi)容和前1章回中的內(nèi)容10分類似,所以就不作詳細(xì)介紹了。

我們需要把服務(wù)器真?zhèn)€代碼和客戶真?zhèn)€代碼分別進行編譯,并且編譯成不同的可以履行文件:

$ gcc Ex093_InetDgramSocketClient.c -o client //編譯客戶端 $ gcc Ex093_InetDgramSocketServer.c -o server //編譯服務(wù)器

看官們,美味佳肴做好了,我們1起來品味下,品味方法就是運行程序,下面是程序的運行結(jié)果,請大家參考:

$ ./server & //在后面運行服務(wù)器 [1] 5689 $ ./client //運行客戶端 please input less then 8 chars for using. dgram [client] sending data (dgram )to server by socket [server] receiving data (dgram) from client by socket [1]+ Done ./server //服務(wù)器運行結(jié)束

看官們,從上面的運行結(jié)果中可以看到,客戶端通過套接字發(fā)送數(shù)據(jù)給服務(wù)器,而服務(wù)器通過套接字接收客戶端發(fā)來的數(shù)據(jù),這樣客戶端和服務(wù)器端可以通過套接字進行通訊。另外,我們進行了1次通訊,通訊的次數(shù)可以自己控制,乃至寫成無窮次也是可以的。每次通訊可以看做是1個完全的通訊進程,我們在通訊進程中發(fā)送的數(shù)據(jù)是字符串”dgram”,大家也能夠發(fā)送其它的字符串。

各位看官,關(guān)于基于AF_INET域的數(shù)據(jù)報套接字通訊的例子我們就說到這里。欲知后面還有甚么例子,且聽下回分解 。


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 一区二区日韩精品 | 欧美日韩亚洲国内综合网 | 我不卡手机影院 | 精品中文字幕一区 | 不用播放器看av | 97国产一区二区精品久久呦 | 色综合热 | 热99精品| www.四虎.com| 高清一区二区三区 | 国产高清视频在线 | 国产精品一二三四区 | 国产一区二区三区免费视频 | 日韩免费一区二区三区 | 亚洲高清久久 | 国产精品a级 | 91久久精品国产 | 欧美视频不卡 | 国产视频久久精品 | 日日av拍夜夜添久久免费 | 国产a区| 久久一区二区三区欧美 | 亚洲成人免费在线 | av2区| 美日韩一区二区 | 黄色综合 | 久久精品一级 | 亚洲乱码视频 | 手机福利视频 | 99精品视频一区二区三区 | 亚洲看片 | 色综合天天综合网国产成人网 | 亚洲精品aaaa| 色综合久久一区二区三区 | 天堂av免费观看 | 欧美日韩激情在线 | 国产第一亚洲 | 在线亚洲自拍 | 精品一区二区三区在线观看国产 | 国产欧美一区二区三区国产幕精品 | 亚洲精品免费观看 |