linux c++ socket入門之tcp server端
tcp_server.h
#include <unistd.h> #include <iostream> #include <sys/socket.h> #include <arpa/inet.h> #define MAXSIZE 1024 class 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.o
g++ -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端
tcp_server.h #include <unistd.h> #include <iostream> #include <sys/socket.h> #incl
linux c++ socket入門之tcp client端 .
main.cpp #include <iostream> #include <tcp_client.h> using namespace std; int main(int
C#程式設計 socket程式設計之tcp伺服器端和客戶端
基於Tcp協議的Socket通訊類似於B/S架構,面向連線,但不同的是伺服器端可以向客戶端主動推送訊息。 使用Tcp協議通訊需要具備以下幾個條件: (1).建立一個套接字(Socket) (2).繫結伺服器端IP地址及埠號--伺服器端 (3).利用Listen()方法開啟監聽--伺服
跨平臺C++伺服器程式開發 (4)tcp socket狀態圖(server端)
套接字狀態 在上一節中,介紹了檔案描述符的概念,我們可以看到socket套接字與磁碟檔案的讀寫方法很相似,但套接字比普通的檔案描述符多了一種狀態,每個開啟的套接字都對應一種狀態,Windows和Linux都可以使用netstat命令檢視。 通過觀察套接字狀態
Linux下socket程式設計之多程序TCP伺服器端
程式碼如下: tcp_server.c #include<string.h> #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #includ
linux一切皆檔案之tcp socket描述符(三)
一、知識準備 1、在linux中,一切皆為檔案,所有不同種類的型別都被抽象成檔案(比如:塊裝置,socket套接字,pipe佇列) 2、操作這些不同的型別就像操作檔案一樣,比如增刪改查等 二、環境準備 元件 版本
洞悉C++網路程式設計之tcp/ip和socket api
原文地址:https://blog.csdn.net/libaineu2004/article/details/79020403 TCP(Transmission Control Protocol) 傳輸控制協議 三次握手 TCP是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次
WPAS是C/S結構中的Server端,linux平臺目前常用的Client端wpa_cli
wpa_supplicant是一個開源軟體專案,它實現了Station對無線網路進行管理和控制的功能。wpa_supplicant有兩個版本,分別是6和8。版本6中沒有網絡卡作為Soft AP相關原始碼。目錄結構如下: ·hostapd:當手機進入Soft AP模式時,手機
C#程式設計 socket程式設計之udp伺服器端和客戶端
基於Udp協議是無連線模式通訊,佔用資源少,響應速度快,延時低。至於可靠性,可通過應用層的控制來滿足。(不可靠連線) 使用Udp協議通訊需要具備以下幾個條件: (1).建立一個套接字(Socket) (2).繫結伺服器端IP地址及埠號--伺服器端 (3).通過SendTo()方法向指
Socket程式設計之TCP例項(附C/C++程式碼詳解)
說明: 主要分步驟給出Windows平臺下socket程式設計的一個TCP例項;使用WINDOWS下網路程式設計規範Winsock完成網路通訊; 對程式各部分細節進行描述。 套接字有三種傳輸型別SOCK_STREAM SOCK_DGRAM SOCK_RAW;
MFC Socket網路程式設計之TCP客戶端
如果想要做一個和Socket有關的MFC軟體, 在建立基本對話方塊時需要點選Windows套接字;然後方可進行Socket有關操作; 如果沒有點,可以在標頭檔案之前寫上 #pragma comment
Linux下socket程式設計之多執行緒TCP伺服器
程式碼如下: thread_server.c #include<string.h> #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #i
socket C/C++程式設計(8)server端多執行緒處理clients佇列
1. 採用C++11的標準執行緒庫(linux之pthread為例)實現多執行緒(test.cpp) #include <stdio.h> #include <string.h> #ifdef WIN32 #include
linux C函數之strdup函數分析
c函數之strdup函數分析一.函數分析1.函數原型:#include <string.h>char *strdup(const char *s); 2.功能:strdup()函數主要是拷貝字符串s的一個副本,由函數返回值返回,這個副本有自己的內存空間,和s沒有關聯。strdup函數復制一個字符串
C/S模型之TCP群聊
cpp etl word client inet_addr accep 應用程序 with value 說明:利用TCP協議和多線程實現群聊功能。一個服務器,多個客戶端(同一個程序多次啟動)。客戶端向服務端發送數據,由服務端進行轉發到其他客戶端。 /服務端 // WSAS
網絡駭客入門之TCP並發網頁服務器
TCP 並發服務器 網絡駭客入門之TCP並發網頁服務器TCP並發服務器本來準備寫在網絡駭客入門之TCP編程後面的,但是因為代碼有點長,所以就單獨寫了一篇註意:因為瀏覽器發送的數據比較多,所以作為本服務器的接受緩沖區recv_buf要大點,至少512字節,建議1024字節如果接收不全的話,無論如何都不能
Python之tcp server模擬Http通訊
1.python tcp server程式碼: 1 import socket 2 3 4 def main(): 5 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6
Socket程式設計之TCP的簡單實現
Client import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.Socket; public class Client { pub
C# socket 程式設計之 accept() 函式返回值解析
accept() 函式會返回一個新的套接字,這個新的套接字在伺服器端與客戶端進行通訊。 伺服器端的繫結監聽是一個套接字,與客戶端通訊的是另一個套接字(accept函式返回的套接字,注意這裡不是返回客戶端的套接字,返回的套接字是新建立在伺服器上的,與客戶端收發訊息用的) 下面這段程式碼,是
python下socket程式設計之TCP連線狀態
1. 引言 python作為一門膠水語言,可以在各個領域上作為快速開發的工具,大大提高開發者處理事務的效率。在網際網路行業中,不管是對網路伺服器的開發,還是對網路客戶端,例如爬蟲的開發中,都會涉及到底層的執行原理,那就是socket程式設計,那麼今天,我們將對python下的socke