小白基于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编程)