c Socket客戶端和服務端示例版本二

2022-03-22 21:53:41 字數 3070 閱讀 1800

客戶端

#include #include 

#include

#include

#include

#include

in.h>#include

#include

#include

#include

#include

#include

in.h>

//執行 ./clientlinux.out 127.0.0.1 8080

int main(int arg, char*args)

if (arg < 3

)

int port = atoi(args[2

]);

//第一步:初始化乙個socket例項

int st = socket(af_inet, sock_stream, 0

);

//struct

sockaddr_in addr;

//記憶體初始化,將addr變數指向的記憶體籤n個位元組用0進行初始化填充

memset(&addr, 0, sizeof

(addr));

//設定採用的協議為tcp/ip協議

addr.sin_family =af_inet;

//設定埠號

addr.sin_port =htons(port);

//設定ip位址

addr.sin_addr.s_addr = inet_addr(args[1

]);

//第三步:開始連線服務端

if (connect(st, (struct sockaddr*) & addr, sizeof(addr)) == -1

)

//第四步:初始化要傳送的資訊並且通過send函式傳送資料

while (1

)

//客戶端接受服務端訊息之前情況緩衝區

memset(s, 0, sizeof

(s));

//客戶端接受服務端返回的訊息

int rc = recv(st, s, sizeof(s), 0

);

if (rc > 0)//

如果接受服務端訊息成功,就列印出來

else

}close(st);

getchar();

return

exit_success;

}

服務端

#include #include 

#include

#include

#include

#include

in.h>#include

#include

#include

#include

#include

#include

in.h>

//執行命令 ./serverlinux.out 8080

int main(int arg, char*args)

if (arg<2

)

int port = atoi(args[1

]);

int st = socket(af_inet, sock_stream, 0

);

//setsockopt 設定socket的乙個屬性,讓位址可以重用。

int on = 0

;

if (setsockopt(st, sol_socket, so_reuseaddr, &on, sizeof(on)) == -1

)

struct

sockaddr_in addr;

memset(&addr, 0, sizeof

(addr));

addr.sin_family =af_inet;

addr.sin_port =htons(port);

//inaddr_any表示這個伺服器上的所有ip位址。一台伺服器可以有多個ip位址。將socket繫結到這個機器的所有ip位址上

addr.sin_addr.s_addr =htonl(inaddr_any);

//將ip位址與server程式繫結

if (bind(st, (struct sockaddr*) & addr, sizeof(addr)) == -1

)

//server開始監聽。 20代表同時有多少個連線過來(20併發)

if (listen(st, 20) == -1

)

char s[1024

];

int client_st = 0;//

客戶端socket

socklen_t len = 0;//

struct sockaddr_in client_addr;//

客戶端ip

void* p = &client_addr;

int i = 0

;

for (i = 0; i < 50; i++)

//列印客戶端的ip位址

printf("

accept ip : %s\n

", inet_ntoa(client_addr.sin_addr));

memset(s,

0, sizeof(1024

));

////接受來自客戶端的訊息

//if (recv(client_st, s, sizeof(s), 0) == -1)

//

//printf("內容:%s\n", s);

while (1

)

else

if (rc == 0)//

如果客戶端關閉連線,server端接受時,返回0

else

}close(client_st);

//關閉客戶端的socket

} close(st);

getchar();

}

c Socket客戶端和服務端示例版本一

客戶端 include include include include include include in.h include include include include include include in.h intmain 第四步 初始化要傳送的資訊並且通過send函式傳送資料 char...

socket(C )客戶端和服務端

define winsock deprecated no warnings include include define port 5150 define msgsize 1024 pragma comment lib,ws2 32.lib void main system pause includ...

客戶端和服務端路徑問題

客戶端和服務端路徑問題 1.客戶端路徑和伺服器端路徑 客戶端路徑需要給出應用名稱,例如 day05 1 aservlet 伺服器端路徑無需給出應用名稱,例如 aservlet 2.客戶端路徑 1 頁面中都是客戶端路徑 超連結的href 表單的action 2 重定向也是客戶端路徑 response....