Linux下搭建tcp伺服器

2021-09-25 07:33:16 字數 1997 閱讀 5389

#include /* see notes */

#include #include #include #include #include #include #include #include /* socket

* bind

* listen

* accept

* send/recv

*/#define server_port 8888

#define backlog 10

int main(int argc, char **ar**)

/* * int bind(int sockfd, struct sockaddr *my_addr, int addrlen)

* 把檔案描述符和ip以及埠繫結起來

* * sockfd:是由socket呼叫返回的檔案描述符.

* addrlen:是sockaddr結構的長度.

* * my_addr:是乙個指向sockaddr的指標

* * struct sockaddr;

* * 不過由於系統的相容性,我們一般不用這個標頭檔案,而使用另外乙個結構(struct sockaddr_in) 來代替

* struct sockaddr_in

* 我們主要使用internet所以

* sin_family一般為af_inet,

* sin_addr設定為inaddr_any表示可以和任何的主機通訊

* sin_port是我們要監聽的埠號.

* sin_zero[8]是用來填充的,一般設定為01就行了

* bind將本地的埠同socket返回的檔案描述符**在一起.成功是返回0,失敗的情況和socket一樣

*/ tsocketserveraddr.sin_family = af_inet;

tsocketserveraddr.sin_port = htons(server_port); /* host to net, short */

tsocketserveraddr.sin_addr.s_addr = inaddr_any;

memset(tsocketserveraddr.sin_zero, 0, 8);

iret = bind(isocketserver, (const struct sockaddr *)&tsocketserveraddr, sizeof(struct sockaddr));

if (-1 == iret)

/** int listen(int sockfd,int backlog)

* sockfd: 是bind後的檔案描述符.(不是指bind的返回值,而是指socket函式返回的檔案控制代碼經過bind函式後)

* backlog: 設定請求排隊的最大長度.當有多個客戶端程式和服務端相連時, 使用這個表示可以介紹的排隊長度. 這裡我們設定為10

* listen函式將bind的檔案描述符變為監聽套接字.返回的情況和bind一樣.

*/ iret = listen(isocketserver, backlog);

if (-1 == iret)

/* 這裡的while(1)為父程序 */

while (1)

else

}

}} }

close(isocketserver);

return 0;

}

上面是**,編譯成功後我們執行程式並用手機連線該伺服器傳送資料進行測試,可以看到,我們在手機端輸入的字串成功傳送到linux系統的伺服器上面去了,當然,有一點要強調一下,因為沒有做內網穿透,這個實驗必須手機和pc(linux)在同一網段才能執行成功。

linux下搭建搭建svn伺服器

1.安裝svn伺服器 安裝svn伺服器 yum install ysubversion 檢視版本 svnserve version 2.庫建立 安裝完成後要建立svn庫 mkdir p icg svn data repo svnadmin create icg svn data repo 執行後,檢...

linux系統下搭建伺服器

linux系統下 可以搭建多種伺服器如 1 搭建dhcp伺服器 2 搭建dns伺服器 3 搭建web伺服器 4 搭建samba 和nfs伺服器 5 搭建ftp伺服器 下面主要介紹在linux系統下 centos 怎樣搭建samba 和nfs伺服器 搭建samba伺服器 主要用於windows使用者和...

LINUX下搭建FTP伺服器

1.作業系統環境 檢視作業系統核心 root rac1 uname a linux rac1 2.6.32 220.el6.x86 64 1 smp wed nov 9 08 03 13 est 2011 x86 64 x86 64 x86 64 gnu linux 檢視作業系統發行版本 root ...