首页 > 代码库 > ACE_linux:TCP通信
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 do40 {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 }
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 do27 {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 }
ACE_linux:TCP通信
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。