C语言编写TCP的文件传输

C语言编写TCP的文件传输,第1张

参考下面代码

#include <winsock2.h>#include <stdio.h>#include <stdlib.h>

#pragma comment(lib,"ws2_32.lib") #define DEFAULT_PORT2302 #define DEFAULT_BUFFER 2048

#define DEFAULT_MESSAGE "This is a test of the emergency \ broadcasting system" char szServerip[128], // Server to connect to szMessage[1024] // Message to send to sever

int iPort = DEFAULT_PORT// Port on server to connect to

//DWORD dwCount = DEFAULT_COUNT// Number of times to send message BOOL bSendOnly = FALSE// Send data onlydon't receive int dirfun()

var cpro_psid ="u2572954"var cpro_pswidth =966var cpro_psheight =120

int getfun()int putfun()int pwdfun()int cdfun()int mdfun()int delfun()int usafun()

void usage() {

printf("usage: client [-p:x] [-s:IP] [-n:x] [-o]\n\n")printf(" -p:x Remote port to send to\n")

printf(" -s:IP Server's IP address or hostname\n")printf(" -n:x Number of times to send message\n")printf(" -oSend messages onlydon't receive\n")ExitProcess(1)}

void ValidateArgs(int argc, char **argv) {

inti

for(i = 1i <argci++) {

if ((argv[i][0] == '-') || (argv[i][0] == '/')) {

switch (tolower(argv[i][1])) {

case 'p':// Remote port if (strlen(argv[i]) >3) iPort = atoi(&argv[i][3])break

case 's': // Server if (strlen(argv[i]) >3)

strcpy(szServerip, &argv[i][3])break

case 'n': // Number of times to send message if (strlen(argv[i]) >3)

//dwCount = atol(&argv[i][3])break

case 'o': // Only send messagedon't receive bSendOnly = TRUEbreakdefault: usage()

是这样,如果是UDP传输,一般就是1500左右。如果是TCP大小不一定,比如你要传10000,有可能一次传的量是小于10000的任意量。

为了解决这个问题,我建议你用阻塞的SOCKET ,TCP传输,用一个循环接收一个大数据包,每次接到多少字节就将内存下表移动多少,在下次循环中继续接受,直到传完一个整包。

据我所知,两台电脑直接想要快速传输几百G的文件,只需要将两台电脑连接到同一局域网内,一根网线就可以搞定。

之前简单易行,我们借助QQ等通讯工具。在两台电脑上分别登陆两个不同的QQ,直接把文件拖动到聊天窗口,开始文件传输。这个的前提是两台电脑都联网。

构建物理环境:

1 .必要的设备:

1 )需要两台带网卡的计算机

2 )制作交叉线(568A-568B )。

568A :

1白绿2绿3白橙4蓝5白蓝6橙7白褐色8褐色

568B :

1白橙2橙3白绿4蓝5白蓝6绿7白褐色8褐色

交叉线

3 )使用交叉线连接两台计算机。

双机互连模拟图

要配置TCP/IP,请:

1 .配置IP地址:

主机a (c类:

192.168.0.1 )

子网掩码:

255.255.255.0

默认网关:

192.168.0.1

主机A TCP/IP参数设置

主机b (c类:

192.168.0.2 )

主机B TCP/IP参数设置

测试两台电脑是否能互相PING对方。

主机b对主机a执行B ping

主机A ping主机b

随便

要参加同一工作组:

1 .右键单击“此计算机”——点“属性”——点“设置变更”——点“系统属性”——点“网络ID”,将两台计算机分别加入同一工作组。

参加工作组。

启用来宾帐户:

1 .打开“控制面板”

启用来宾帐户。

陆地

更改组策略:

1 .单击“运行”菜单,在运行菜单中输入命令。

打开gpedit.msc本地策略编辑器,展开“计算机配置”-“windows设置”-“安全设置”-“本地策略”-“用户权限分配”,拒绝从网络访问此计算机

删除来宾帐户。

共享设置:

1 .单击要共享的文件夹,右键单击“共享”,单击特定用户,打开文件共享对话框,选择要共享的用户“添加用户”everyone (所有用户),最后访问everyone

结语:

如果从主机a向主机b共享要复制的文件,就像移动自己电脑的硬盘文件一样简单。

今后,计算机将不断发展,从结构和功能等du方面来看,大致分为以下趋势。

由于科学技术发展dao的需要,很多部门要求计算机高速且大容量的存储,使计算机向巨大化发展。

精细化:

计算机的小型化、轻量化、低价化,容易应用于各种领域和各种场合。

目前市场上的各种笔记本电脑、笔记本电脑和掌上电脑都是向这个方向发展的产品。

网络化:

计算机网络是计算机技术和通信技术相互渗透、不断发展的产物。

计算机网络实现了计算机之间的通信和资源共享。 现在,包括LAN和广域网的形成在内的各种计算机网络一定会加速社会信息化的进程。

多媒体化:

传统计算机处理信息的主要对象是文字和数字,人们通过键盘、鼠标和显示器交互文字和数字。

在人类的生活中,图、文、声、像等各种形式的信息很多。

随着数字化技术的发展,计算机的表现能力进一步改善,现代计算机可以一体化图形、声音、文字处理,人们面对的是有彩色、字符串排列的信息环境,这就是通常所说的多媒体

多媒体技术大大改变了信息处理的对象和内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8076084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存