<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Android驅(qū)動(dòng)開發(fā)入門及手機(jī)案例開發(fā)分析

          Android驅(qū)動(dòng)開發(fā)入門及手機(jī)案例開發(fā)分析

          作者: 時(shí)間:2012-07-25 來源:網(wǎng)絡(luò) 收藏

          在網(wǎng)絡(luò)編程中,cONnect函數(shù)通常用于客戶端建立tcp連接。使用的步驟如下:

          本文引用地址:http://www.ex-cimer.com/article/148721.htm

          1) 創(chuàng)建流式套接字

          int sockfd;

          if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) 0)

          {

          perror(“fail to socket”);

          exit(-1);

          }

          2) 填充服務(wù)器端地址信息

          struct sockaddr_in servaddr;

          servaddr.sin_family = PF_INET;

          servaddr.sin_port = htons(8888);

          servaddr.sin_addr.s_addr = inet_addr(“192.168.1.100”);

          3) 發(fā)送連接請求

          if (connect(sockfd, (struct sockaddr *)serv_addr, sizeof(serv_addr)) 0)

          {

          perror(“fail to connect”);

          exit(-1);

          }

          注:如果客戶端的套接字沒有綁定ip地址和端口的話,在連接過程中系統(tǒng)會(huì)自動(dòng)分配。tcp連接的建立實(shí)際上就是三次“握手”的過程。

          udp協(xié)議提供的是面向非連接的服務(wù),通信雙方不需要建立連接。一方只需要建立好套接字,并顯式或由系統(tǒng)綁定地址和端口號(hào)后就可以發(fā)送/接收數(shù)據(jù)包。和tcp不同的是,使用udp協(xié)議的數(shù)據(jù)報(bào)套接字(SOCK_DGRAM)并不限定唯一的通信方。既可以發(fā)送(sendto)數(shù)據(jù)給任意的接受方,也可以從任意的發(fā)送方接收(recvfrom)數(shù)據(jù)。

          如果希望為一個(gè)數(shù)據(jù)報(bào)套接字指定唯一的通信方時(shí),可以使用connect來實(shí)現(xiàn)這一功能。需要注意的是,在數(shù)據(jù)報(bào)套接字上使用connect并不是建立連接,不存在“握手”的過程。僅僅是為這個(gè)套接字指定一個(gè)通信方,一旦指定了對方的地址,就可以通過send/recv來發(fā)送/接收數(shù)據(jù)了。而且可以在這個(gè)數(shù)據(jù)報(bào)套接字上多次調(diào)用connect函數(shù)來指定不同的通信方。

          在udp中使用connect的方法和tcp中類似,只需在創(chuàng)建套接字時(shí),把套接字的類型由SOCK_STREAM換成SOCK_DGRAM即可。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();