c++网络编程(一)TCP/UDPwindows/linux下入门级socket通信客户端与服务端交互代码aircraft

c++网络编程(一)TCP/UDP入门级客户端与服务端交互代码

1,在这里为什么要讨论Linux上的文件操作呢?因为Linux上,socket操作与文件操作没有区别,在Linux上,socket也被认为是文件的一种。注:Linux上的C语言编译器–GCC,具体使用就不在这里讲了。

3,Linux上的文件或套接字操作:打开文件:

intopen(constchar*path,intflag);–>(Linux上对应socket(…)函数)

关闭文件或套接字:

intclose(intfd);–>(Windows上对应closesocket(SOCKETS)函数)

将数据写入文件或传递数据:

ssize_twrite(intfd,constvoid*buf,size_tnbytes);

读取文件中数据或接收数据:

ssize_tread(intfd,void*buf,size_tnbytes);

1,Windows套接字大部分是参考BSD系列UNIX套接字设计的,所以很多地方都跟Linux套接字类似。因此,只需要更改Linux环境下编好的一部分网络程序内容,就能再Windows平台下运行。

2,上面讲了Linux上,文件操作和套接字操作一致。但Windows上的I/O函数和套接字I/O函数是不同的。Winsock数据传输函数:

intsend(SOCKETs,constchar*buf,intlen,intflags);

Winsock数据接收函数:

intrecv(SOCKETs,constchar*buf,intlen,intflags);

Winsock库初始化:

intmain(intargc,char*argv[]){WSADATAwsaData;...if(WSAStartup(MAKEWORD(1,2),&wsaData)!=0)ErrorHandling("WSAStartup()error!");...return0;}在退出时需要释放Winsock库:

intWSACleanup(void);//返回0成功,失败返回SOCKET_ERROR

代码:

windows下:

TCP:

一.服务端代码

二.客户端代码

#define_WINSOCK_DEPRECATED_NO_WARNINGS#include#include#pragmacomment(lib,"ws2_32.lib")voidmain(){//加载套接字WSADATAwsaData;charbuff[1024];memset(buff,0,sizeof(buff));if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("FailedtoloadWinsock");return;}SOCKADDR_INaddrSrv;addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(5099);addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//创建套接字SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);if(SOCKET_ERROR==sockClient){printf("Socket()error:%d",WSAGetLastError());return;}//向服务器发出连接请求if(connect(sockClient,(structsockaddr*)&addrSrv,sizeof(addrSrv))==INVALID_SOCKET){printf("Connectfailed:%d",WSAGetLastError());return;}else{//接收数据recv(sockClient,buff,sizeof(buff),0);printf("%s\n",buff);}//发送数据char*buffSend="hello,thisisaClient....";send(sockClient,buffSend,strlen(buffSend)+1,0);printf("%d",strlen(buffSend)+1);//关闭套接字closesocket(sockClient);WSACleanup();system("pause");}

怕某些小白不懂我详细说说运行,运行时先开服务端,在开客户端运行,也就是开两个cPP文件分别运行,两个cpp各是一个小项目代码不要放在一起

这里的127.0.0.1是代表本地的地址,你们想实现两机交互就用对方的地址。

代码很简单,想要直接拿去,接下来直接看运行结果:

UDP:

windows下UDP服务端代码

windows下UDP客户端端代码

注:以下代码需在LINUX下运行gcc什么的都可以

LINUX下:

一.TCP

linux下TCP服务端代码:

linux下TCP客户端代码:

二.UDP

linux下UDP服务端代码

linux下UDP客户端代码

#include#include#include#include#includeintmain(intargc,char*argv[]){intclient_sockfd;intlen;structsockaddr_inremote_addr;//服务器端网络地址结构体intsin_size;charbuf[BUFSIZ];//数据传送的缓冲区memset(&remote_addr,0,sizeof(remote_addr));//数据初始化--清零remote_addr.sin_family=AF_INET;//设置为IP通信remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//服务器IP地址remote_addr.sin_port=htons(8000);//服务器端口号/*创建客户端套接字--IPv4协议,面向无连接通信,UDP协议*/if((client_sockfd=socket(PF_INET,SOCK_DGRAM,0))<0){perror("socketerror");return1;}strcpy(buf,"Thisisatestmessage");//发送的内容printf("sending:'%s'/n",buf);sin_size=sizeof(structsockaddr_in);/*向服务器发送数据包*/if((len=sendto(client_sockfd,buf,strlen(buf),0,(structsockaddr*)&remote_addr,sizeof(structsockaddr)))<0){perror("recvfrom");return1;}/*关闭套接字*/close(client_sockfd);return0;}

THE END
1.C++网络编程初学者的开源项目码云周刊第41期互联网的兴起,让网络程序有了长足的发展,让我们可以通过网络编程在程序中实现计算机的通信。举个例子,当你使用浏览器访问码云时,你的计算机就和码云的某台服务器通过互联网连接起来了,然后,码云的服务器把网页内容作为数据通过互联网传输到你的电脑上。 当然,对于 C++ 网络编程的初学者,小编推荐下面6个还算不错的开https://cloud.tencent.com/developer/article/1078264
2.C在线工具菜鸟工具C 在线工具 AI 编程工具 复制 清空 下载 1 #include <stdio.h> 2 ? 3 int main() 4 { 5 /* Write C code in this online editor and run it. */ 6 printf("Hello, World! \n"); 7 8 return 0; 9 } Hello, World!Copyright ? JYSHARE.COM 2024 备案号:闽ICP备12019840号-4 https://c.runoob.com/compile/11/
3.socket编程——C++实现基于UDP协议的简单通信(含详解)c++udp在了解完socket编程的一些基本理论知识后,很想把理论应用到实践,直接搜项目实战的教程,但是在看了几篇博客文章和一些B站的教程后,发现大部分都是不易上手的基于UDP/TCP的聊天系统,不太适合刚接触C++网络编程的同学,所以这里用C++实现简单的UDP通信,可以帮助大家更好的了解socket编程中的一些重要步骤。 https://blog.csdn.net/m0_74203352/article/details/137405601
4.C++网络编程详细讲解C语言您的位置:首页→ 软件编程→ C 语言→ C++网络编程 C++网络编程详细讲解更新时间:2022年10月31日 10:39:23 作者:无水先生 计算机是通过TCP/IP协议进行互联从而进行通信的,为了把复杂的TCP/IP协议隐藏起来,更方便的实现计算机中两个程序进行通信,引出了socket这个概念https://www.jb51.net/article/266314.htm
5.C++网络编程之一网络框架介绍Clay的技术空间常用的网络框架 Boost.Asio:Boost.Asio 是一个跨平台的 C++ 网络编程库,提供了异步 I/O 操作的抽象。它可以处理 TCP、UDP、SSL 等协议,并提供了丰富的异步操作和事件处理机制。 POCO C++ Libraries:POCO 是一个功能强大的 C++ 类库,其中包含了丰富的网络通信模块,包括 HTTP、SMTP、POP3、FTP 等协议的支持,以及https://www.techgrow.cn/posts/27a1782a.html
6.c++网络编程TCP/IP最近闲暇时间多了,有了时间就下定决心学习学习 cpp,之前有一定 cpp 基础。所以 TCP/IP 为背景进行 cpp 的学习。先写一个简单 TCP 的服务端和客户端来体验一下。什么 TCP 呀 UDP 在开始接触网络编程时候是那么陌生,是那么遥远。 其实大家不要脱离实际,自己把他 magic 化,其实一切都是合乎常理和实际的。先从https://www.jianshu.com/p/203a98095122
7.c++网络验证C++网络编程电子书,包括了网络编程的各个方面,内含19个文档。 上传者:weixin_41839371时间:2018-03-16 易语言软件网络验证程序:丁丁神盾网络验证1.18免费版全套源码 这是丁丁神盾网络验证最后的一个免费版,同时也是功能最强大的一个免费版, 软件里带有易语言,按键精灵,C语言的使用源码以及服务器后台代码,使用其它语言https://www.iteye.com/resource/ljf5201-10518768
8.基于C++从0到1手写Linux高性能网络编程框架(超清)基于C++从0到1手写Linux高性能网络编程框架(超清) 网络编程:构建互联世界的基石 在当今数字化时代,网络编程已成为连接全球用户、设备与服务的核心技术。它允许开发者创建能够通过网络交换数据的应用程序,从简单的Web服务器到复杂的分布式系统,无不依赖于网络编程。本文将深入探讨网络编程的基本概念、关键技术、应用场景,https://blog.51cto.com/u_15958308/11412696
9.C++builder中基于SOCKET的网络编程.pdfC++builder中基于SOCKET的网络编程.pdf,计算机光盘软件与应用 软件设计开发 ComputerCDSoftwareandApplications 2012年第 6期 三、C++buiIder环境下的网络编程 1.创建客户机端的套接字并与服务器建立连接 C++bui]der中,网络组件TServerSocket和TC1ientSocket vo:id fashttps://max.book118.com/html/2017/0713/122069728.shtm
10.c++网络编程项目:flamingo一款高性能轻量级开源即时通讯软件服务器代码使用纯C++11开发,所以您的gcc/g++版本必须至少在4.7以上,推荐的版本是4.8.5。另外,使用cmake和makefile工具进行项目管理和编译,因此您需要安装cmake和makefile工具。 安装mysql。 使用的数据库是mysql,如果您使用的是CentOS 7.0及以上系统,需要安装 mariadb-server、mariadb-client 和mariadb-devel。如果https://github.com/balloonwj/flamingo
11.主干课程本课程以Java语言为描述语言,描述网络编程的体系结构、主要技术以及相应编码。内容包括:Java语言的平台无关性、Java程序的开发过程、小应用程序(Applet);图形用户界面设计(awt和swing);JDBC数据库访问技术;JavaBean开发和MVC设计模式;Servlet编程;输入输出流;Java多线程;访问Internet资源的相关技术;Socket编程:客户端套接字https://xxkx-ybxy.xaut.edu.cn/Undergraduate_Education/zgkc.htm
12.ZLToolKit:一个基于C++11的轻量级网络框架,基于线程池技术可以一个基于C++11简单易用的轻量级网络编程框架 项目特点 基于C++11开发,避免使用裸指针,代码稳定可靠;同时跨平台移植简单方便,代码清晰简洁。 使用epoll+线程池+异步网络IO模式开发,并发性能优越。 代码经过大量的稳定性、性能测试,可满足商用服务器项目。 支持linux、macos、ios、android、windows平台 https://toscode.mulanos.cn/xia-chu/ZLToolKit
13.Linux多线程服务端编程(豆瓣)曾在摩根士丹利IT 部门工作5 年,从事实时外汇交易系统开发。现在在美国加州硅谷某互联网大公司工作,从事大规模分布式系统的可靠性工程。编写了开源C++ 网络库muduo,参与翻译了《代码大全( 第2 版)》和《C++ 编程规范(繁体版)》,整理了《C++ Primer (第4 版)(评注版)》,并曾多次在各地技术大会演讲。https://book.douban.com/subject/20471211/
14.《Linux多线程服务端编程:使用muduoC++网络库(写给每一位C++程序当当网图书频道在线销售正版《Linux多线程服务端编程:使用muduo C++网络库(写给每一位C++程序员,功力为证,集编程思想、经验之大成)》,作者:陈硕,出版社:电子工业出版社。最新《Linux多线程服务端编程:使用muduo C++网络库(写给每一位C++程序员,功力为证,集编程思http://product.dangdang.com/23162953.html