首先我說下一下幾個基本的步驟:
1、socket
2、bind繫結
3、listen
4、accpet
5、recv
6、傳送
1.socket
int socket(int domain, int type, int protocol);
功能:
建立用來通訊的套接字
引數:domain:通訊域
af_inet
type:流式套接字
sock_stream
protocol:
預設為0
返回值:
成功返回檔案描述符
失敗返回-1
2.listen
int listen(int sockfd, int backlog);
功能:監聽客戶端傳送的三次握手鏈結請求
引數:sockfd:套接字檔案描述符
backlog:允許等待且尚未被處理的三次握手請求連線個數
返回值:
成功返回0
失敗返回-1
3.connect
int connect(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
功能:引數:
sockfd:套接字檔案描述符
addrlen:位址長度
返回值:
成功返回0
失敗返回-1
4.accept
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
功能:處理等待佇列中第乙個三次握手鏈結請求
引數:sockfd:套接字檔案描述符
addr:接收傳送三次握手端的ip位址資訊
addrlen:接收傳送三次握手端的ip位址長度資訊
返回值:
成功返回新的用來通訊的檔案描述符
失敗返回-1
5.send
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
功能:傳送資訊
引數:sockfd:通訊的檔案描述符
buf:傳送資料空間首位址
len:傳送資料長度
flags:預設為0
返回值:
成功返回實際傳送位元組數
失敗返回-1
6.recv
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:接收資訊
引數:sockfd:套接字檔案描述符
buf:存放資料空間首位址
len:最大接收資料長度
flags:預設為0
返回值:
成功返回實際接收位元組數
失敗返回-1
對方關閉套接字返回0
粘包問題:
傳送資料量小,接收資料量大時,資料會粘連到一起,並實現傳送
解決方法:
1.每次傳送資料時,產生時間間隔
2.定長傳送
下面我附上他的源**
#include 「head.h」
int main(int argc, const char *ar**)
;struct sockaddr_in seraddr;
sockfd = socket(af_inet, sock_stream, 0);
if (-1 == sockfd)
seraddr.sin_family = af_inet;
seraddr.sin_port = htons(50000);
seraddr.sin_addr.s_addr = inet_addr("192.168.0.183");
ret = bind(sockfd, (struct sockaddr *)&seraddr, sizeof(seraddr));
if (-1 == ret)
ret = listen(sockfd, 10);
if (-1 == ret)
confd = accept(sockfd, null, null);
if (-1 == confd)
ret = recv(confd, tmpbuff, sizeof(tmpbuff), 0);
if (-1 == ret)
printf("recv:%s\n", tmpbuff);
sprintf(tmpbuff, "%s ------echo----", tmpbuff);
ret = send(confd, tmpbuff, strlen(tmpbuff)+1, 0);
if (-1 == ret)
close(confd);
close(sockfd);
return 0;
搭建乙個簡單的http伺服器
在之前的博文中,我陸續說過如何搭建ftp,sftp,tftp伺服器,在本文中,我們來繼續聊如何實戰搭建乙個http伺服器。http伺服器有很多種,如tomcat,apache等,然而,很多新手無法搭建和配置成功,頗為受挫,內心不爽。我保證,本文搭建http伺服器的過程極簡化。搭建http伺服器的步驟...
go搭建乙個簡單web伺服器
go語言裡面提供了乙個完善的net http包,通過http包可以很 方便的就搭建起來乙個可以執行的web服務。同時使用這個包能很簡單地對web的路由,靜態檔案,模版,cookie等數 據進行設定和操作。http包建立web伺服器 1 服務端 fmt.fprintf w,hello go web s...
搭建乙個FTP伺服器
1 首先在本地機器上建立乙個使用者!這些使用者是用來登入到ftp的!我的電腦右鍵 管理 本地使用者和組 使用者 右鍵 新建使用者 輸入使用者名稱和密碼再點建立就行了!3 之後是安裝iis元件!在開始選單裡 控制面板 新增或刪除程式 新增 刪除windows元件 應用程式伺服器 internet 資訊...