网络编程C/S模型怎样才能实现真正的聊天功能
学完socket编成后,就迫不及待地写一个简单的聊天程序,好在同学面前装装逼,毕竟外行看热闹。然而在自己的电脑上运行是毫无差错,发送接收都没有问题,然而将客户端的exe文件打包后发送给其他电脑上运行时程序死在了connect函数上,始终无法连接到服务器,相信小白都有过这样的经历,为之气愤不已,我也很气愤。为什么连接不上呢?
电脑的网络是通过连在路由器上实现上网的,一个路由器的覆盖范围小,也就是说一个路由器就是一个局域网,连接在不同路由器上的电脑是无法用socket直接进行通信的,一些牛逼的大佬说用打洞的技术可以实现通信,毕竟人家是大佬,咱们也只能说声大佬牛逼之外还能说啥。废话不都说,到底怎样才能实现真正的聊天功能,我们需要连接到公网IP上就能实现通信。首先申请一个云服务器(先声明一下,不是打广告,不是打广告),阿里云或者腾讯云都可以,学生申请很便宜,一个月10块钱左右,申请到服务器后会给你一个公网IP和私有IP,使用这个公网IP。申请学生阿里云服务器请点击
当申请到这个服务器后该如何运行我们自己写的程序呢?这时就需要 xshell这个工具了,xshell可以远程操作服务器,也可以操作虚拟机中的linux系统,操作方法和在本机操作一样,都是用linux指令。怎么连就不说了,网上教程应有尽有。怎样才能将写好的程序上传到服务器运行呢,连接上与服务器后,输入 yum -y install lrzsz指令安装一个插件,安装完毕后,输入 rz 指令便可将指定的文件上传到当前路径下,输入 sz+文件名 便可将服务器上的文件下载到本机上。将源文件上传成功后,编译后运行起来即可。
在客户端中,sockaddr_in结构体中的IP就填云服务器的公网IP,在确保电脑连网的状态下启动客户端,便可连接云服务器,只要有网络,不管你在哪都能实现通信。
如果你还是一个单片机爱好者,有了云服务器你可以使用ESP8266、4G通信模块、GPRS模块来实现远距离通信,相信你的逼格顿时提升的就不止一点点了。
网络编程C/S模型怎样才能实现真正的聊天功能相关推荐
- Java网络编程案例--CS模型的简单实现
Java网络编程案例–CS模型的简单实现 Java网络编程案例CS模型的简单实现 基本概述 程序原理图 源代码 基本概述 该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传 ...
- 网络编程I/O模型分析
网络编程I/O模型分析 1.阻塞I/O.非阻塞I/O模型 阻塞IO模型 非阻塞型 2.I/O复用模型 slecet() pool() epool() ==结构体== ==epoll_create()= ...
- TCP网络编程----C/S模型 (客户端/服务器模型)的代码实现
TCP网络编程----C/S模型 (客户端/服务器模型)的代码实现 client发送数据到server,server对数据进行提取并根据用户输入的操作符进行两个数的计算,并将计算结果传给client. ...
- linux服务器网络编程之线程模型
前言 本文将主要介绍传统的和目前流行的进程/线程模型,在讲进程/线程模型之前需要先介绍一种设计模式: Reactor 模式.Reactor 模式首先是事件驱动的,有一个或多个并发输入源,有一个Se ...
- Linux后端服务器网络编程之线程模型丨reactor模型详解
前言 上一篇文章<后端服务器网络编程之 IO 模型>中讲到服务器端高性能网络编程的核心在于架构,而架构的核心在于进程/线程模型的选择.本文将主要介绍传统的和目前流行的进程/线程模型,在 ...
- Windows下网络编程及多线程模型
Socket编程 要想客户端和服务器能在网络中通信,那必须得使用 Socket 编程. 服务端首先调用 socket() 函数,创建网络协议为 IPv4,以及传输协议为 TCP 的 Socket ,接 ...
- java 网络编程 聊天_Java——网络编程(实现基于命令行的多人聊天室)
目录: 1.ISO和TCP/IP分层模型 2.IP协议 3.TCP/UDP协议 4.基于TCP的网络编程 5.基于UDP的网络编程 6.基于TCP的多线程的聊天室的实现 1.ISO和TCP/IP分层模 ...
- Java——网络编程(实现基于命令行的多人聊天室)
2019独角兽企业重金招聘Python工程师标准>>> 目录: 1.ISO和TCP/IP分层模型 2.IP协议 3.TCP/UDP协议 4.基于TCP的网络编程 5.基于UDP的网络 ...
- Python网络编程(OSI模型、网络协议、TCP)
前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...
最新文章
- 编码/解码和进制转化工具hURL
- Python 中关于 round 函数的小坑
- unity随笔(1)-材质、对象
- 使用JPA和@NamedQueries的Spring数据
- ajax工作中使用模板
- 【2017年第2期】专题:大数据管理与分析
- console vue 打包之后怎么去掉_Vue Cli 3 打包配置--自动忽略 console.log 语句
- axios的介绍与页面配置---axios工作笔记003
- Redis服务器被劫持风波
- VMvare虚拟机如何删除安装的ubuntu操作系统
- win_server_2012离线安装.net3.5教程
- JAVA视频全套在线学习
- C++ ——Qt的信号和槽的详解
- CAD2019安装方法及步骤
- SECS半导体通信委员会参考书
- 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
- 2022-2023上学期 奖状的清单
- 【Multisim仿真】NE555电路三角波、方波、正弦波发生器
- 最大熵模型(MaxEnt)解析
- word转图片,pdf转图片,doc转图片,docx转图片
热门文章
- HttpServletResponse应用 的 简单介绍
- 什么是分布式系统的CAP理论?
- Promise进阶——如何实现一个Promise库
- Linux/Unix 新手和专家教程
- 使用T-SQL语句操作数据表-删除数据
- 备忘(持续更新。。。)
- ffmpeg 纯静态编译,以及添加自定义库流程摘要
- win2003 sp2+iis 6.0上部署.net 2.0和.net 4.0网站的方法
- Sphinx+MySQL5.1x+SphinxSE+mmseg
- linux内核笔记-内核同步