多线程Socket传送文件的客户端和服务端源代码

[url]http://www.delphibbs.com/keylife/iblog_show.asp?xid=7557[/url]
多线程Socket传送文件的客户端和服务端源代码
一.客户端:
1.Form上放一个ClientSocket1,OpenDialog1,button1
2.ClientSocket1属性设置:
   Active : False
   ClientType : ctBlocking
   Host : '127.0.0.1'
   Port : 5998
3.button1事件:


procedure TForm1.Button1Click(Sender: TObject);
Var
 s : TWinSocketStream;
 f : TFileStream;
begin
 If Not OpenDialog1.Execute Then Exit;
 ClientSocket1.Open;
 s := TWinSocketStream.Create(ClientSocket1.Socket, 60000);
 f := TFileStream.Create(OpenDialog1.FileName, fmShareDenyWrite);
 Try
   s.CopyFrom(f, 0);
 Finally
   s.Free;
   f.Free;
   ClientSocket1.Close;
 End;
end;

----------------------------------------------
二.服务端:
1.Form上放一个ServerSocket1
2.ServerSocket1属性设置:
   Active : True
   Port : 5998
   ServerType : stThreadBlocking
3.定义客户端线程类:


TClientThread = Class(TServerClientThread)
Private
Public
 Procedure ClientExecute; override;
End;
Procedure TClientThread.ClientExecute;
Var
 ReceiveBuffer : Array[0..4095] Of Char;
 SocketStream : TWinSocketStream;
 BytesRead : Integer;
 F : TFileStream;
Begin
While Not Terminated And ClientSocket.Connected Do
 Begin
  try
    SocketStream := TWinSocketStream.Create(ClientSocket, 60000);
    F := TFileStream.Create('c:\afile.exe', fmCreate);
    try
      FillChar(ReceiveBuffer, 10, 0);
      If SocketStream.WaitForData(5000) Then
       Repeat
         BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer));
         if BytesRead = 0 then
           ClientSocket.Close
         Else
          F.WriteBuffer(ReceiveBuffer, BytesRead);
       Until  Not SocketStream.WaitForData(2000);
    finally
      SocketStream.Free;
      ClientSocket.Close;
      f.Free;
    end;
  except
  end;
 End;
End;
4.ServerSocket1的OnGetThread事件代码:
procedure TForm1.ServerSocket1GetThread(Sender: TObject;
 ClientSocket: TServerClientWinSocket;
 var SocketThread: TServerClientThread);
begin
 SocketThread := TClientThread.Create(False, ClientSocket);
end;

 

转载于:https://blog.51cto.com/525927/121282

多线程Socket传送文件的客户端和服务端源代码相关推荐

  1. TCP:利用Socket编程技术实现客户端向服务端上传一个图片。

    问题: 利用Socket编程技术实现客户端向服务端上传一个图片的程序. 客户端: import java.io.*; import java.net.Socket;public class clien ...

  2. QT中使用C++ socket通信(了解socket通信、socket的三次握手和四次挥手、socket函数说明、客户端与服务端的代码实例)

    一.TCP/IP协议四个抽象层: 二.socket位置 socket就在应用程序的传输层和应用层之间,传输层的底一层的服务提供给socket抽象层,socket抽象层再提供给应用层. 三.socket ...

  3. flask和socket结合使用实现客户端向服务端发送文件

    文章目录 1.实验效果 2.文件结构说明 3.操作步骤 4.代码下载 5.服务端文件 6.客户端文件 7.前端文件 1.实验效果 成功发送文件和接收文件 2.文件结构说明 3.操作步骤 (1)首先运行 ...

  4. java与C语言socket通信(C客户端java服务端)

    服务器端代码 MyServer.java import java.io.*; import java.net.*; import java.util.*;public class MyServer { ...

  5. java与C语言之间socket通信(java客户端 C服务端)

    直接贴代码 服务端C代码 server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket. ...

  6. Socket测试工具(客户端、服务端)

    Socket是什么? SOCKET用于在两个基于TCP/IP协议的应用程序之间相互通信.最早出现在UNIX系统中,是UNIX系统主要的信息传递方式.在WINDOWS系统中,SOCKET称为WINSOC ...

  7. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息

    客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  8. php cannot bind port to socket,PHP基于socket实现客户端和服务端通讯功能

    本文主要介绍了PHP基于socket实现的简单客户端和服务端通讯功能,可实现服务端接收客户端发送的字符串进行翻转操作后返回客户端的功能,需要的朋友可以参考下 服务端: set_time_limit(0 ...

  9. python中使用socket编程实现带有界面的客户端向服务端发送文件和下载文件

    一主界面: **二:发送文件界面:**首先需要开启发送文件服务端(这里需要注意的是每一次发送文件之前都需要开启一次服务端,因为我在这里将每一次发送文件之后就关闭了客户端和服务端之间的连接) 输出相关客 ...

  10. 基于多线程的TCP局域网通信,客户端向服务端上传 文件简单实现源码

    客户端 import java.io.*; import java.net.Socket;/*** ### 作业3:* 完成文件上传案例学习* - 案例需求* 客户端:数据来自于本地文件,接收服务器反 ...

最新文章

  1. 使用Kali官网提供的虚拟机系统
  2. 跨平台使用exp/imp进行数据库转移时出现丢失对象的原因
  3. Silverlight多文件(大文件)上传的开源项目
  4. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】
  5. dota是java中的_用java开发dota英雄最华丽的技能(实例讲解)
  6. CH - 0304 IncDec Sequence(差分+思维)
  7. php安装dat,PHP Parsing a .dat file
  8. java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...
  9. sqlserver 2008阻止保存要求重新创建表的更改
  10. mysql数据库自动关闭
  11. java一个引用多大_为什么Java 8为方法引用引入了一个新的“::”运算符?
  12. 反编译工具Depends---dll和exe反编译工具
  13. Java实现部标JTT1078实时音视频传输指令——视频流负载包(RTP)传输
  14. Linux服务器CPU飙升排查
  15. 打开组策略 计算机配置,组策略命令,小编告诉你电脑组策略怎么打开
  16. 写计算机课的作文,电脑课作文(小学生作文写不好怎么办)
  17. PS实战-涂抹掉原图上的文字
  18. originpro2021导入excel(.xls)
  19. javaWeb基础二:Servlet(java前后端交互的技术)
  20. sim7600ce 拨号上网测试_sim7600ce拨号上网

热门文章

  1. [毕业生的商业软件开发之路]解决方案资源管理器
  2. mysql-mysqldump命令导出多个数据库结构(实战)
  3. 全文检索lucene6.1的检索方式
  4. 《构建之法》阅读笔记(三)
  5. silverlight 4常用的多线程技术
  6. opc客户端_通过OPC接口将TOP Server与Proficy iFix配合使用(上)
  7. 使用Spark core和SparkSQL的窗口函数分别实现分组取topN的操作
  8. 将Ext JS 5应用程序导入Web项目以及实现本地化
  9. 用java写 java1,1,2,4,7,13,24,44算法
  10. 若无云,岂有风——词语语义相似度计算简介