linux c++ socket入门之tcp server端
来源:互联网 发布:网络赚钱入门必读pdf 编辑:程序博客网 时间:2024/05/24 02:02
tcp_server.h
#include <unistd.h>#include <iostream>#include <sys/socket.h>#include <arpa/inet.h>#define MAXSIZE 1024class tcp_server{private: int socket_fd,accept_fd; sockaddr_in myserver; sockaddr_in remote_addr;public: tcp_server(int listen_port); int recv_msg();};
tcp_server.cpp
#include "tcp_server.h"tcp_server::tcp_server(int listen_port) { if(( socket_fd = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)) < 0 ){ throw "socket() failed"; } memset(&myserver,0,sizeof(myserver)); myserver.sin_family = AF_INET; myserver.sin_addr.s_addr = htonl(INADDR_ANY); myserver.sin_port = htons(listen_port); if( bind(socket_fd,(sockaddr*) &myserver,sizeof(myserver)) < 0 ) { throw "bind() failed"; } if( listen(socket_fd,10) < 0 ) { throw "listen() failed"; }}int tcp_server::recv_msg() { while( 1 ) { socklen_t sin_size = sizeof(struct sockaddr_in); if(( accept_fd = accept(socket_fd,(struct sockaddr*) &remote_addr,&sin_size)) == -1 ) { throw "Accept error!"; continue; } printf("Received a connection from %s\n",(char*) inet_ntoa(remote_addr.sin_addr)); if( !fork() ) { char buffer[MAXSIZE]; memset(buffer,0,MAXSIZE); if( ( read(accept_fd,buffer,MAXSIZE)) < 0 ) { throw("Read() error!"); } else { printf("Received message: %s\n",buffer); break; } exit(0); } close(accept_fd); } return 0;}
main.cpp
#include <iostream>#include <tcp_server.h>int main(int argc,char* argv[]){ tcp_server ts(atoi(argv[1])); ts.recv_msg(); return 0;}
编译
g++ -c tcp_server.cpp -o tcp_server.og++ -g tcp_server.o main.cpp -I. -o main
运行
./main 9527
客户端测试
telnet server_ip 9527
服务器端响应
client(IP:192.168.99.1) connected.
- linux c++ socket入门之tcp server端
- linux c++ socket入门之tcp server端
- linux c++ socket入门之tcp server端
- linux c++ socket入门之tcp server端
- linux socket tcp Server c语言编写
- Linux下Socket编程之TCP Server端
- linux c++ socket入门之tcp client端 .
- linux c++ socket入门之tcp client端 .
- 【Linux】Linux C socket 编程之TCP
- socket linux c tcp
- linux c socket server
- TCP之server.c
- 小田的专栏 Linux C socket 编程之TCP
- Linux之旅--SS5 Socket Server入门指南
- Simple TCP Server Client Socket C
- Simple TCP Socket Client and Server Communication in C Under Linux
- linux下 socket tcp Server c语言编写(分别实现单进程,多进程,多线程)
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- Java面向接口编程与多态的示例学习
- HDOJ2109
- 推荐8个IT类网站
- memcached源码学习-hashtable
- WPF idle
- linux c++ socket入门之tcp server端
- API级别
- OJDBC版本介绍
- stdint.h 文件 int8_t uint8_t int16_t uint16_t (一)
- android如何停止Thread和AsyncTask
- 一起来学FIX协议(3)——格林威治时间
- Oracle数据库REDO日志损坏恢复处理
- android中The connection to adb is down,问题和解决 AndroidEclipseAntXML
- java写入日志文件