TCP網路通訊例項 訊息的傳送與接收

2021-06-02 19:13:13 字數 2679 閱讀 8908

tcp網路通訊示例,用伺服器等待客戶端連線,並且在客戶端連線後傳送乙個訊息後切斷。

伺服器端:

#include #include #include #include #if defined(unix)

#include #include #include #elif defined(windows)

#include #define bzero(p, len) memset((p), 0, (len))

#endif

#define buffer_size 1024

#define server_addr "127.0.0.1"

#define server_port 8089

int main(int argc, const char *argv)

#endif

char buffer[buffer_size];

int server_fd, client_fd;

struct sockaddr_in cliaddr, servaddr;

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

bzero(&(servaddr.sin_zero), sizeof(servaddr.sin_zero));

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(server_port);

servaddr.sin_addr.s_addr = htonl(inaddr_any);

bind(server_fd, (struct sockaddr *)&servaddr, sizeof(servaddr));

if (listen(server_fd, 5) == -1)

printf("listen\n");

while (1)

char *client_ip_addr_buffer;

client_ip_addr_buffer = inet_ntoa(cliaddr.sin_addr);

char message = "hello, world! from server!\n";

sprintf(buffer, "%s", message);

if (send(client_fd, buffer, strlen(buffer), 0) == -1)

#if defined(unix)

close(client_fd);

#elif defined(windows)

closesocket(client_fd);

#endif

}#if defined(unix)

close(server_fd);

#elif defined(windows)

closesocket(server_fd);

wsacleanup();

#endif

return 0;

}

客戶端:

#if defined(unix)

#include #include #include #elif defined(windows)

#include #define bzero(p, len) memset((p), 0, (len))

#endif

#define server_addr "127.0.0.1"

#define server_port 8089

int main(int argc, const char *argv)

#endif

int sockfd;

struct sockaddr_in servaddr;

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

bzero(&servaddr, sizeof(servaddr));

#if defined(unix)

inet_pton(af_inet, server_addr, &servaddr.sin_addr);

#elif defined(windows)

servaddr.sin_addr.s_un.s_addr = inet_addr(server_addr);

#endif

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(server_port);

if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(struct sockaddr)) == -1)

char buffer[255];

size_t recv_len;

recv_len = recv(sockfd, buffer, 255, 0);

int i;

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

#if defined(unix)

close(sockfd);

#elif defined(windows)

closesocket(sockfd);

wsacleanup();

#endif

return 0;

}

基於TCP的簡單通訊例項

程式設定了連線數限制,當連線伺服器的數量超過3時,不再接受其他連線。且只實現了客戶端與伺服器之間的通訊。伺服器端 using system using system.collections.generic using system.componentmodel using system.data u...

android網路通訊之訊息推送教程例項彙總

一 例項教程 android網路通訊之訊息推送教程篇 1 android cloud to device messaging 服務介紹 從雲端推送訊息到手 2 通知推送在android上執行 技術背景 二 學習筆記 android網路通訊之訊息推送的實踐過程篇 1 定時訊息推送 火 2 訊息推送 火...

tcp的資料報傳送與網路佇列長度

假設tcp的擁塞控制演算法為tcp reno,ssthresh 20,擁塞視窗的初始值為1.假設網路鏈路為n0 b1,d1 n1 b1,d2 n2,其中 b,d 分別代表頻寬和時延,b1 b2。假設這條鏈路僅有乙個tcp session。現在,從理論上分析下這條鏈路的丟包情況。根據之前的分析 1 t...