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     ssize_t bc=0;            //接收的字节数
10     ACE_SOCK_Stream peer;//SOCK_IO,和客户端的数据通路
11     ACE_Time_Value timeout(100, 0);//TCP接受超时时间
12 
13     //Socket创建,绑定,监听
14     ACE_INET_Addr addr(SERVER_PORT);
15     ACE_SOCK_Acceptor acceptor;
16     if(acceptor.open(addr) != 0)     //绑定端口
17     {
18         cout<<"bind port fail!"<<endl;
19         return -1;
20     }
21     cout<<"server ready. "<<endl;
22 
23     while(true)
24     {
25         if (acceptor.accept(peer) != -1)    //建立和客户端的连接
26         {
27             std::cout<<"client connect. "<<std::endl;
28             while(true)
29             {
30 
31                 if((bc=peer.recv(buffer,1024,&timeout))<=0)    //接收数据(超时或对端断开break)
32                 {
33                     break;  
34                 }
35                 buffer[bc]='\0';
36                 cout<<"[server rev]:>"<<buffer<<endl;
37                 if(strcmp(buffer, "quit") == 0)  
38                 {
39                     break;  
40                 }
41                 do
42                 {
43                     cout<<"[server cin]:>";
44                     cin.getline(buffer,1024);
45                 }while(strlen(buffer)<=0); 
46                 peer.send(buffer, strlen(buffer));    //发送数据
47 
48             }
49             peer.close ();
50         }
51     }
52 
53     return 0; 
54 }
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     ssize_t bc=0;            //接收的字节数
13 
14     ACE_INET_Addr addr(3000,"192.168.237.128");
15     ACE_Time_Value timeout(100,0);
16     ACE_SOCK_Stream peer;
17     ACE_SOCK_Connector connector;
18     if(connector.connect(peer,addr,&timeout) != 0)
19     {
20         cout<<"connection failed !"<<endl;
21         return -1;
22     }
23     cout<<"conneced !"<<endl;
24 
25     while(true)
26     {
27         do
28         {
29             cout<<"[client cin]:>";
30             cin.getline(buffer,1024);
31         }while(strlen(buffer)<=0); 
32         peer.send(buffer, strlen(buffer));    //发送数据
33 
34         if((bc=peer.recv(buffer,1024,&timeout))<=0)    //接收数据(超时或对端断开break)
35         {
36             break;  
37         }
38         buffer[bc]='\0';
39         cout<<"[client rev]:>"<<buffer<<endl;
40         if(strcmp(buffer, "quit") == 0)  
41         {
42             break;  
43         }
44     }
45     peer.close();
46 
47     return 0; 
48 }
client.cpp

 

ok!

posted on 2015-01-16 22:01  光标  阅读(484)  评论(0编辑  收藏  举报

导航