小白基于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.发文件,我采取设置缓冲区,循环发送的方法,这样可以传输各种大小的文件。

时间: 2024-08-28 19:10:50

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

Windows下基于TCP协议的大文件传输(流形式)

简单实现TCP下的大文件高效传输 在TCP下进行大文件传输,不像小文件那样直接打包个BUFFER发送出去,因为文件比较大可能是1G,2G或更大,第一效率问题,第二TCP粘包问题.针对服务端的设计来说就更需要严紧些.下面介绍简单地实现大文件在TCP的传输应用. 粘包出现原因:在流传输中出现,UDP不会出现粘包,因为它有消息边界(参考Windows 网络编程) 1 发送端需要等缓冲区满才发送出去,造成粘包 2 接收方不及时接收缓冲区的包,造成多个包接收 解决办法: 为了避免粘包现象,可采取以下几种措

用scala实现一个基于TCP Socket的快速文件传输程序

这是用scala实现的一个简单的文件传输程序. 服务端 package jpush import java.io.{DataInputStream, File, FileOutputStream} import java.net.ServerSocket import scala.collection.JavaConversions._ /** * Created by dingb on 2016/6/3. */ object Server extends App { def port = 88

免费云主机文件传输软件推荐,大文件极速秒传

在对云主机进行运维的过程中,我们总是需要在云主机和本地之间进行文件传输.但是文件传输的过程往往会受到带宽的限制,譬如小编仅从云主机上下载一个300兆大小的文件就需要10分钟,上传一个60兆大小的文件需要2分钟,如果上传下载更大的文件,将耗时更长,运维效率将更加低下,并且传输过程中还会和业务系统争夺带宽资源,严重影响应用质量.而市面上大多能够实现快速上传下载大文件的软件工具,都需要支付一定的费用,并且安全性无法得到保障. 为了解决这一困扰,小编测试并试用了众多文件传输类软件或工具,终于发现一款高效

基于udp的局域网聊天室

需要实现功能如下: 1.服务器端功能如下: 广播通知客服端登录/退出 接受客服端发来的消息,广播给所有用户 广播系统消息 2.客服端功能如下: 接收服务器发来的消息并显示 发送消息给服务器端 实现代码如下: //***********服务端******************* 1 #include <head.h> 2 3 #define CLIENT_LOGIN 10 4 #define CLIENT_QUIT 20 5 #define CLIENT_TALK 30 6 #define S

Centos7安装文件传输软件rz sz

一直使用Xshell的xftp传输文件,谁知道忽然无法正常使用. 于是,决定用户rz进行传输 安装步骤也比较简单 1.首先安装第三方源(以下源比默认源包含更多安装包,建议添加该源使用) yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 2.安装lrzsz yum install -y lrzsz 3.使用 下载文件到本地电脑 sz filename 上传文件到服务器(会弹出一个文件

局域网内基于UDP的文件传输小工具

一.目标 基于UDP来设计一个文件传输的小工具,以此来了解UDP协议的特点. 内容: 基本要求: 输入对方IP地址,对方如果存在,可以给对方发送文件. 扩展要求: (1)工具具有友好的用户界面: (2)局域网内使用该工具的两台主机可以互相进行文字通信: (3)自动按照一定频率扫描局域网内其他开启了该工具的主机,并在界面上用列表显示出来: (4)传输文件和文字内容时,直接选择界面上已经显示出来的存活主机,不需要手动输入IP地址. 二.设计实现 环境: Ubuntu14.04+Gcc4.8+Ecli

Linux下几种文件传输命令

Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃取,比FTP有更高的安全性.在功能方面与FTP很类似,不仅可以传输文件数据,而且可以进行远程的文件管理(如建立,删除,查看文件列表等操作).Sftp与ftp虽然只有一字之差,但基于

vsftpd文件传输 、 Samba共享服务

Vsftpd 1.什么是FTP? FileTransfer Protocol 基于C/S结构的文件传输协议 2.使用什么协议?什么端口? TCP 21    建立命令链路 TCP 20    在主动传输模式下服务器使用20端口向客户端建立数据链路 3.FTP工作原理 --------- Client               Server-------------- 1031                21 1032                 20 ①客户端向服务器发出连接请求,同时

Linux下几种文件传输命令 sz rz sftp scp

最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃取,比FTP有更高的安全性.在功能方面与FTP很类似,不仅可以传输文件数据,而且可以进行远程的文件管理(如建立,删除,查看文件列表等操作).Sftp与ftp虽然只有一字之差,但基于的传输协议却是不同的.因此不能用sftp client去连接