基於C 和TCP的Socket通訊

2021-09-11 23:07:44 字數 2700 閱讀 6120

很長時間沒寫部落格了,希望自己可以堅持下去,從小白開始成長吧,也希望各位讀者能給點鼓勵。

本文實現的功能是基於c++和tcp進行服務端客戶端進行通訊,希望給你給讀者一定的幫助。

具體步驟:

1 初始化scoket 資源,注意,一定要在同一段**中實現,不然可能會出問題。

2 構造服務端socket

3 繫結監聽介面

4 開始監聽

5 接收客戶端連線,進行通訊,繼續監聽。

#define _crt_secure_no_warnings

#pragma comment(lib, "ws2_32.lib")

#include "pch.h"

#include #include using namespace std;

int main01()

/*構造服務端socket*/

socket listen_sock = socket(af_inet, sock_stream, 0);

/*配置監聽位址和埠*/

sockaddr_in serveraddr;

zeromemory((char *)&serveraddr, sizeof(serveraddr));

serveraddr.sin_family = af_inet;

serveraddr.sin_port = htons(1234); /*本地監聽埠:1234*/

serveraddr.sin_addr.s_addr = htonl(inaddr_any); /*有ip*/

/*繫結監聽介面*/

bind(listen_sock, (struct sockaddr *)&serveraddr, sizeof(serveraddr));

listen(listen_sock, 5);

sockaddr_in addrclient;

int len = sizeof(sockaddr);

char nullbuf[64];

for (int i = 0; i < 64; i++)

cout << "等待連線" << endl;

while (true)

cout << "舒辰:";

printf("%s\n", recvbuf);

memcpy(sendbuf, nullbuf, 64);

cout << "寶寶:" ;

cin >> sendbuf;

sendlen = 0;

for (int i = 0; i < 64; i++)

}send(sockconn, sendbuf, sendlen+1, 0);

} closesocket(sockconn);

} wsacleanup();

std::cout << "hello world!\n";

return 0;

}

1 初始化scoket 資源,注意,一定要在同一段**中實現,不然可能會出問題。

2 構造服務端socket

3 輸入ip位址和埠進行連線

#define _winsock_deprecated_no_warnings

#pragma comment(lib, "ws2_32.lib")

#include "pch.h"

#include #include #include #include< ws2tcpip.h>

using namespace std;

int main()

/*構造客戶端socket*/

socket client_sock = socket(af_inet, sock_stream, 0);

sockaddr_in addrsrv;

int res = inet_pton(af_inet,"127.0.0.1",&addrsrv.sin_addr.s_un.s_addr); //inet_addr

addrsrv.sin_family = af_inet;

addrsrv.sin_port = htons(1234);

connect(client_sock, (sockaddr*)&addrsrv, sizeof(sockaddr));

cout << "連線成功!" << endl;

char nullbuf[64];

int sendlen;

for (int i = 0; i < 64; i++)

char sendbuf[64];

char recvbuf[64];

while (true)

sendlen = 0;

for (int i = 0; i < 64; i++)

}send(client_sock, sendbuf, sendlen + 1, 0);

memcpy(recvbuf, nullbuf, 64);

recv(client_sock, recvbuf, 64, 0);

cout << "寶寶:";

printf("%s\n", recvbuf);

} closesocket(client_sock);

wsacleanup();

std::cout << "hello world!\n";

return 0;

}

具體的**就這些,希望能幫到你。

基於TCP和UDP的socket通訊(C 實現)

首先談談tcp socket tcp簡單的三次握手過程如圖,syn synchronize sequence numbers 同步標誌 ack acknowledgement number 確認標誌 圖中可以看出,三次握手的過程是在c的connect 和s的bind listen accept 函式...

基於tcp和udp的socket通訊

做個小遊戲的project用到了socket程式設計,於是,就在網上查閱了一下資料,下面簡單總結一下。1.什麼是socket socket是在應用層與傳輸層之間的乙個抽象層,它把tcp ip層複雜的操作抽象為幾個介面 用層的程序實現網路通訊,使得不同主機的相關程序之間交換資料。2.什麼是tcp和ud...

基於Socket的UDP和TCP協議

一 概述 tcp 傳輸控制協議 和udp 使用者資料報協議 是網路體系結構tcp ip模型中傳輸層一層中的兩個不同的通訊協議。tcp 傳輸控制協議,一種面向連線的協議,給使用者程序提供可靠的全雙工的位元組流,tcp套介面是位元組流套介面 stream socket 的一種。udp 使用者資料報協議。...