小白基于Csocket的局域网聊天文件传输软件C/S模式

2024-01-22 18:32

本文主要是介绍小白基于Csocket的局域网聊天文件传输软件C/S模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,并不建议大家用Csocket,经验之谈,CAsyncSocket基础上派生的一个同步阻塞Socket的封装类,也就是说编程的过程很多麻烦,但是我坚持下来了。。。。。好烦。。。。

.................................................分割线.....................................................................................

思想其实很容易理解,S(服务器端)创建socket,Listen()客户端是否连接,然后Accept()连接上来的socket。而C(客户端)创建socket,然后连接Connect()S,这样基本的结构就形成了。然后就可以Send和Receive了。

而传文字和传文件,我建议两个端口进行,并且另起一个线程用于传文件,这样会避免错误,毕竟Csocket是同步阻塞的,好烦。。。。如果用一个socket很容易出错,具体点容易Receive错误的信息。

具体步骤:

1.服务器获取本机IP地址,显示到IP控件中,然后S的用户告诉C的用户,我的IPi是这个,你连这个。(当然得使用其他方式),依据该IP,和一个未使用端口创建Socket->Listen()->Accept();

2.C根据S告诉的IP地址,连接。然后双方就可以发送和接收文字了。

3.传文件的方式

(1)S->C:S点击按钮,然后通过传文字的方法告诉C,我要给你发文件了,然后建立传文件的Socket,Accept()等待C应答。C点击按钮,接收文件,并给S发送文字消息,然后连接S建立的Socket,(IP地址之前已经知道了,端口是写死的),SAccept()到C,就Send文件。具体如何发文件,见下文。

(2)C->S:因为我觉得没必要知道C的IP,所以还是S建立socket,当C告诉S我要发的时候,S建立,Accept,说”我准备好了“你发吧,然后C连接Connect(),发送文件,S接收。

发送文件这种校验方式还有待推敲,我也是第一次写。。。。。大家多提建议和意见,我是按照QQ发文件的思维想的。

4.发文件,我采取设置缓冲区,循环发送的方法,这样可以传输各种大小的文件。

这篇关于小白基于Csocket的局域网聊天文件传输软件C/S模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633860

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)