ACE_linux:TCP通信

1.涉及类

ACE_INET_Addr//ACE网络地址
ACE_SOCK_Acceptor//ACE网络服务器
ACE_SOCK_Connector//ACE网络客户端
ACE_SOCK_Stream//ACE数据流

2.简介

TCP通讯

传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。

Tcp通信过程一般为如下步骤:

a) 服务器绑定端口,等待客户端连接。

b) 客户端通过服务器的ip和服务器绑定的端口连接服务器。

c) 服务器和客户端通过网络建立一条数据通路,通过这条数据通路进行数据交互。

技术分享

3.示例代码

技术分享
 1 #include <iostream>
 2 #include "ace/SOCK_Acceptor.h"
 3 using namespace std;
 4 
 5 const int  SERVER_PORT = 3000 ;
 6 int main(int argc, char *argv[]) 
 7 {
 8     char buffer[1024];
 9     ACE_SOCK_Stream peer;//SOCK_IO,和客户端的数据通路
10     ACE_Time_Value timeout(100, 0);//TCP接受超时时间
11 
12     //Socket创建,绑定,监听
13     ACE_INET_Addr addr(SERVER_PORT);
14     ACE_SOCK_Acceptor acceptor;
15     if(acceptor.open(addr) != 0)     //绑定端口
16     {
17         cout<<"bind port fail!"<<endl;
18         return -1;
19     }
20     cout<<"server ready. "<<endl;
21 
22     while(true)
23     {
24         if (acceptor.accept(peer) != -1)    //建立和客户端的连接
25         {
26             std::cout<<"client connect. "<<std::endl;
27             while(true)
28             {
29 
30                 if(peer.recv(buffer,1024,&timeout)<=0)    //接收数据(超时或对端断开break)
31                 {
32                     break;  
33                 }
34                 cout<<"[server rev]:>"<<buffer<<endl;
35                 if(strcmp(buffer, "quit") == 0)  
36                 {
37                     break;  
38                 }
39                 do
40                 {
41                     cout<<"[server cin]:>";
42                     cin.getline(buffer,1024);
43                 }while(strlen(buffer)<=0); 
44                 peer.send(buffer, strlen(buffer));    //发送数据
45 
46             }
47             peer.close ();
48         }
49     }
50 
51     return 0; 
52 }
server.cpp
技术分享
 1 #include <ace/SOCK_Connector.h> 
 2 
 3 #include <string>
 4 #include <iostream>
 5 using namespace std;
 6 
 7 const int  SERVER_PORT = 3000 ;
 8 
 9 int main(int argc, char *argv[]) 
10 {
11     char buffer[1024];
12 
13     ACE_INET_Addr addr(3000,"192.168.237.128");
14     ACE_Time_Value timeout(100,0);
15     ACE_SOCK_Stream peer;
16     ACE_SOCK_Connector connector;
17     if(connector.connect(peer,addr,&timeout) != 0)
18     {
19         cout<<"connection failed !"<<endl;
20         return -1;
21     }
22     cout<<"conneced !"<<endl;
23 
24     while(true)
25     {
26         do
27         {
28             cout<<"[client cin]:>";
29             cin.getline(buffer,1024);
30         }while(strlen(buffer)<=0); 
31         peer.send(buffer, strlen(buffer));    //发送数据
32 
33         if(peer.recv(buffer,1024,&timeout)<=0)    //接收数据(超时或对端断开break)
34         {
35             break;  
36         }
37         cout<<"[client rev]:>"<<buffer<<endl;
38         if(strcmp(buffer, "quit") == 0)  
39         {
40             break;  
41         }
42     }
43     peer.close();
44 
45     return 0; 
46 }
client.cpp

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。