#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 ...