簡單的伺服器和客戶程式

2021-09-30 02:17:23 字數 1978 閱讀 3397

簡單的伺服器

這個伺服器所做的全部工作是在流式連線上傳送字串 "hello, world!/n"。你要測試這個程式的話,可以在一台機器上執行該程式,然後 在另外一機器上登陸:

$ telnet remotehostname 3490

remotehostname 是該程式執行的機器的名字。

伺服器**:

#include

#include

#include

#include

#include

#include

#include

#include

#define myport 3490 /*定義使用者連線埠*/

#define backlog 10 /*多少等待連線控制*/

main()

my_addr.sin_family = af_inet; /* host byte order */

my_addr.sin_port = htons(myport); /* short, network byte order */

my_addr.sin_addr.s_addr = inaddr_any; /* auto-fill with my ip */

bzero(&(my_addr.sin_zero),; /* zero the rest of the struct */

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct

sockaddr))== -1)

if (listen(sockfd, backlog) == -1)

簡單的客戶程式

這個程式比伺服器還簡單。這個程式的所有工作是通過 3490 埠連線到命令列中指定的主機,然後得到伺服器傳送的字串。

客戶**:

#include

#include

#include

#include

#include

#include

#include

#include

#define port 3490 /* 客戶機連線遠端主機的埠 */

#define maxdatasize 100 /* 每次可以接收的最大位元組 */

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

if ((he=gethostbyname(ar**[1])) == null)

if ((sockfd = socket(af_inet, sock_stream, 0)) == -1)

their_addr.sin_family = af_inet; /* host byte order */

their_addr.sin_port = htons(port); /* short, network byte order */

their_addr.sin_addr = *((struct in_addr *)he->h_addr);

bzero(&(their_addr.sin_zero),; /* zero the rest of the struct */

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct

sockaddr)) == -1)

if ((numbytes=recv(sockfd, buf, maxdatasize, 0)) == -1)

buf[numbytes] = '/0';

printf("received: %s",buf);

close(sockfd);

return 0;

} 注意,如果你在執行伺服器之前執行客戶程式,connect() 將返回 "connection refused" 資訊,這非常有用。

TCP客戶 伺服器簡單Socket程式

建立乙個 tcp 連線時會發生下述情形 1.伺服器必須準備好接受外來的連線。這通常通過呼叫 socket bind 和 listen 這三個函式來完成,我們稱之為被動開啟。2.客戶通過呼叫 connect 發起主動開啟,這導致客戶tcp傳送乙個syn 同步 分節,標識希望連線的伺服器端口以及初始序號...

Socket建立簡單伺服器和客戶端程式

socket addressfamily,sockettype,protocoltype endpoint和ipendpoint 參考 endpoint是ipendpoint的基類,ipendpoint可以強轉為endpoint。endpoint ep endpoint iep socket三種監聽...

IOCP 簡單伺服器和客戶端

iocp client.cpp 定義控制台應用程式的入口點。include stdafx.h include include pragma comment lib,ws2 32.lib include void main if lobyte wsadata.wversion 1 hibyte wsa...