用socket編寫tcp程式(c/c++) - linux wiki
此頁由linux wiki使用者chenxing於2023年10月12日 (星期日) 07:42的最後更改。
本文介紹利用linux下的c語言socket函式建立tcp連線,相容c++。
利用tcp連線,可以進行http、ftp等常見協議的資訊傳輸,是linux網路程式設計的重要部分。
[隱藏]
進行網路程式設計,通常需要引用如下標頭檔案
#include#include
#include
#include
#include
#include
//以下標頭檔案是為了使樣例程式正常執行
#include
#include
#include
struct sockaddr_in pin;struct hostent *nlp_host;
int sd;
char host_name[
256]
;int port;
//初始化主機名和埠。主機名可以是ip,也可以是可被解析的名稱
strcpy
(host_name,
"www.linux-wiki.cn");
port=80;
//解析網域名稱,如果是ip則不用解析,如果出錯,顯示錯誤資訊
while
((nlp_host=gethostbyname(host_name))==
0)//設定pin變數,包括協議、位址、埠等,此段可直接複製到自己的程式中
bzero(
&pin,
sizeof
(pin));
pin.sin_family
=af_inet;
//af_inet表示使用ipv4
pin.sin_addr.s_addr
=htonl(inaddr_any)
; pin.sin_addr.s_addr=(
(struct in_addr *
)(nlp_host->h_addr)
)->s_addr;
pin.sin_port
=htons(port)
;//建立socket
sd=socket(af_inet,sock_stream,0)
;//建立連線
while
(connect(sd,
(struct sockaddr*
)&pin,
sizeof
(pin)
)==-1)
至此,與伺服器端的連線已建立,通訊方法見最後一部分。
本段是c++**。
int serversocket;
struct sockaddr_in serveraddr;
struct sockaddr_in clientaddr;
// 用port儲存使用的埠
int port=
8000
;// 建立socket,並設定
serversocket = socket(af_inet, sock_stream, 0);
// 設定socket選項,這是可選的,可以避免伺服器程式結束後無法快速重新執行
int val=1;
setsockopt(serversocket, sol_socket, so_reuseaddr, &val, sizeof
(val));
// 定義埠和監聽的位址
serveraddr.sin_family
= af_inet;
serveraddr.sin_port
= htons(port)
;serveraddr.sin_addr.s_addr
= htonl(inaddr_any)
;memset(&
(serveraddr.sin_zero
), 0, 8);
int rc = bind(serversocket, (
struct sockaddr*
)&serveraddr,
sizeof
(struct sockaddr));
if(rc ==-1
)// 讓serversocket開始監聽,客戶佇列長為5
rc = listen(serversocket, 5);
if(rc ==-1
)// 等待客戶連線
int sock;
int clientaddrsize =
sizeof
(struct sockaddr_in)
;sock = accept(serversocket,
(struct sockaddr*
)&clientaddr,
(socklen_t*
)&clientaddrsize)
;
這樣,連線就已建立,返回的sock就是乙個新的socket,可以用來通訊。
send(int sd,char * data,int len,0);其中sd是socket變數名(檔案描述符),data是資料緩衝區的位址,len是緩衝區的大小,0通常無需更改recv(int sd,char * buf,int maxlen,0);close(int sd);取自「2個分類:
網路程式設計
| c/c++程式設計
用c編寫cgi程式
cgi的工作原理介紹 cgi common gateway inte ce 是乙個web伺服器提供資訊服務的標準介面,通過這樣乙個介面,web伺服器能夠執行程式,並將程式輸出的資訊返回給瀏覽器。因為在web網上的資料都是靜態的,通過cgi程式能夠動態的處理瀏覽者的請求,如儲存使用者輸入的資訊,根據使...
Python 使用socket編寫TCP服務程式
使用socket編寫tcp服務程式 by 鄭瑞國 1 引用網路模組socket 2 建立乙個tcp網路套接字s 3 繫結本機ip位址和指定埠號 4 開始監聽 5 接受連線 6 接受資訊 import socket 1 引用網路模組socket s socket.socket socket.af in...
TCP時間獲取socket程式
客戶伺服器設計正規化之迭代伺服器,不過這種伺服器使用範圍很有限,因為這種伺服器無法處理已等待服務的新使用者。include include see notes include include include include int main int argc char argv if sockfd ...