vc++實(shí)現(xiàn)的tcp socket客戶(hù)端和服務(wù)端示例
Tcp Server
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
// initial socket library
WORD wVerisonRequested;
WSADATA wsaData;
int err;
wVerisonRequested = MAKEWORD(1, 1);
err = WSAStartup(wVerisonRequested, &wsaData);
if (err != 0)
{
return -1;
}
//if (LOBYTE(wsaData.wVersion) != 1 ||
// HIBYTE(wsaData.wHighVersion) != 1)
//{
// WSACleanup();
// return -1;
//}
// create socket
SOCKET sockServer = socket(AF_INET, SOCK_STREAM, 0);
// bind socket
SOCKADDR_IN addrServer;
addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(6000);
bind(sockServer, (SOCKADDR *)&addrServer, sizeof(addrServer));
// listen
listen(sockServer, 5);
SOCKADDR_IN addrClient;
int len = sizeof(addrClient);
while(1)
{
// accept
SOCKET sockConnection = accept(sockServer, (SOCKADDR *)&addrClient, &len);
// send
char sendBuf[100];
sprintf(sendBuf, "Welcome %s", inet_ntoa(addrClient.sin_addr));
send(sockConnection, sendBuf, strlen(sendBuf)+1,0);
// receive
char recvBuf[100];
recv(sockConnection, recvBuf, 100, 0);
//
printf("%s", recvBuf);
// close connection socket
closesocket(sockConnection);
}
}
Tcp Client
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
// initial socket library
WORD wVerisonRequested;
WSADATA wsaData;
int err;
wVerisonRequested = MAKEWORD(1, 1);
err = WSAStartup(wVerisonRequested, &wsaData);
if (err != 0)
{
return -1;
}
//if (LOBYTE(wsaData.wVersion) != 1 ||
// HIBYTE(wsaData.wHighVersion) != 1)
//{
// WSACleanup();
// return -1;
//}
// create socket
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
// connect server socket
SOCKADDR_IN addrServer;
addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(6000);
connect(sockClient, (SOCKADDR *)&addrServer, sizeof(addrServer));
// receive
char recvBuf[100];
recv(sockClient, recvBuf, 100, 0);
//
printf("%s", recvBuf);
// send
char sendBuf[100] = "this is lisi\n";
send(sockClient, sendBuf, strlen(sendBuf)+1,0);
// close connection socket
closesocket(sockClient);
// clean socket library
WSACleanup();
}
- C++ boost::asio編程-同步TCP詳解及實(shí)例代碼
- C++ boost::asio編程-異步TCP詳解及實(shí)例代碼
- C/C++ 實(shí)現(xiàn)簡(jiǎn)易HTTP服務(wù)器的示例
- C++編寫(xiě)高性能服務(wù)器實(shí)例教程
- VSCode遠(yuǎn)程開(kāi)發(fā)調(diào)試服務(wù)器c/c++代碼
- linux c++ 服務(wù)器端開(kāi)發(fā)面試必看書(shū)籍整理
- C++實(shí)現(xiàn)簡(jiǎn)單的HTTP服務(wù)器
- C++簡(jiǎn)單QQ程序服務(wù)器端的實(shí)現(xiàn)代碼
- C++、python和go語(yǔ)言實(shí)現(xiàn)的簡(jiǎn)單客戶(hù)端服務(wù)器代碼示例
- 使用C++制作簡(jiǎn)單的web服務(wù)器(續(xù))
- 使用C++制作簡(jiǎn)單的web服務(wù)器
- c++ 如何在libuv中實(shí)現(xiàn)tcp服務(wù)器
相關(guān)文章
c++動(dòng)態(tài)規(guī)劃經(jīng)典算法
動(dòng)態(tài)規(guī)劃算法通常用于求解具有某種最優(yōu)性質(zhì)的問(wèn)題。本文主要介紹了c++動(dòng)態(tài)規(guī)劃經(jīng)典算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
C++ 漢諾塔問(wèn)題知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于C++ 漢諾塔問(wèn)題知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。2020-02-02
C語(yǔ)言實(shí)現(xiàn)彈跳小球項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)彈跳小球項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
解決了個(gè)困擾了2天的問(wèn)題,定點(diǎn)運(yùn)算問(wèn)題
本文主要講解定點(diǎn)運(yùn)算問(wèn)題,需要的朋友可以參考一下。2016-06-06
C++面向?qū)ο蠖嗉?jí)菜單向Arduino的移植問(wèn)題小結(jié)
這篇文章主要介紹了C++面向?qū)ο蠖嗉?jí)菜單向Arduino的移植問(wèn)題及實(shí)現(xiàn)思路,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06

