main.cpp
#include <iostream> #include <tcp_client.h> using namespace std; int main(int argc,char* argv[]) { tcp_client tc(argv[1],argv[2]); return 0; }
tcp_client.h
#include <unistd.h> #include <iostream> #include <sys/socket.h> #include <arpa/inet.h> #include <errno.h> class tcp_client { private: int socket_fd; char message[4096]; struct sockaddr_in server_addr; public: tcp_client(char* server_ip,char* server_port); };
tcp_client.cpp
#include "tcp_client.h" tcp_client::tcp_client(char* server_ip,char* server_port) { if( (socket_fd = socket(AF_INET,SOCK_STREAM,0)) < 0 ) { printf("create socket error: %s(errno:%d)\n)",strerror(errno),errno); exit(0); } memset(&server_addr,0,sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(atoi(server_port)); if( inet_pton(AF_INET,server_ip,&server_addr.sin_addr) <=0 ) { printf("inet_pton error for %s\n",server_ip); exit(0); } if( connect(socket_fd,(struct sockaddr*)&server_addr,sizeof(server_addr))<0) { printf("connect error: %s(errno: %d)\n",strerror(errno),errno); exit(0); } printf("send message to server: \n"); fgets(message,4096,stdin); if( send( socket_fd,message,strlen(message),0 ) < 0 ) { printf("send message error\n"); exit(0); } close(socket_fd); exit(0); }
编译方式与上一篇相同:linux c++ socket入门之tcp server端
运行
./main 192.168.99.131 9527