资源简介
给刚接触Socket的人学习用的,技术含量不高。为了让新人可以看得懂,代码量很小,力求简单。由于使用了C#3.0的匿名委托,不是VS2008的用户需要自己将匿名委托部分修改后才可以执行,VS2008用户可以直接打开并测试效果。
代码片段和文件信息
using System;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Client
{
public partial class Form1 : Form
{
TcpClient tcp;
IPEndPoint remoteEP;
FileStream fs;
bool isstart = false;
Action showMessage;
public Form1()
{
InitializeComponent();
listView1.Columns.Add(“信息“).Width = listView1.Width / 2;
listView1.Columns.Add(“时间“).Width = listView1.Width / 2;
showMessage = delegate(string msg) { listView1.Items.Add(new ListViewItem(new string[] { msg DateTime.Now.ToString() })); };
button2.Enabled = false;
}
private void button1_Click(object sender EventArgs e)
{
textBox1.Enabled = false;
textBox2.Enabled = false;
textBox3.Enabled = false;
button1.Enabled = false;
button2.Enabled = true;
button3.Enabled = false;
try
{
remoteEP = new IPEndPoint(IPAddress.Parse(textBox1.Text) 12345);
tcp = new TcpClient();
tcp.Client.ReceiveTimeout = 2000;
isstart = true;
tcp.Client.BeginConnect(remoteEP callback tcp.Client);
}
catch (Exception ex)
{
ShowMessage(ex.Message);
}
}
void callback(IAsyncResult ar)
{
Socket handler = (Socket)ar.AsyncState;
try
{
handler.EndConnect(ar);
//发送请求下载的文件名。
byte[] bytes = Encoding.UTF8.GetBytes(textBox2.Text);
handler.Send(bytes);
//接收下载的文件。
byte[] receive = new byte[1024];
int count = 0;
using (fs = new FileStream(textBox3.Text FileMode.OpenOrCreate))
{
//fs.Position = 0;
while (isstart)
{
count = handler.Receive(receive);
if (count > 0)
{
fs.Write(receive 0 count);
}
else
{
//注意,多数情况下收到字节数为0就意味着对方关闭了连接,
//但是否是数据接收完整应该进行文件长度比较,我这里只是简单模拟下,未作任何验证。
break;
}
}
}
handler.Close();
Stop();
ShowMessage(“传输完毕。(若看不到下载的文件,说明服务器端不存在该文件)“);
}
catch (Exception ex)
{
handler.Close();
Stop();
ShowMessage(ex.Message);
}
}
void Stop()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 490 2007-07-21 01:33 Client\bin\Release\Client.vshost.exe.manifest
文件 3718 2009-10-30 16:01 Client\Client.csproj
文件 4288 2009-10-30 16:11 Client\Form1.cs
文件 7263 2009-10-30 15:58 Client\Form1.Designer.cs
文件 6017 2009-10-30 15:58 Client\Form1.resx
文件 498 2009-10-30 14:43 Client\Program.cs
文件 1424 2009-10-30 14:43 Client\Properties\AssemblyInfo.cs
文件 2841 2009-10-30 14:43 Client\Properties\Resources.Designer.cs
文件 5612 2009-10-30 14:43 Client\Properties\Resources.resx
文件 1091 2009-10-30 14:43 Client\Properties\Settings.Designer.cs
文件 249 2009-10-30 14:43 Client\Properties\Settings.settings
文件 204 2009-10-30 16:12 Service\obj\Release\Service.csproj.FileListAbsolute.txt
文件 500 2009-10-30 14:27 Service\Program.cs
文件 1426 2009-09-08 11:07 Service\Properties\AssemblyInfo.cs
文件 2843 2009-09-08 11:07 Service\Properties\Resources.Designer.cs
文件 5612 2009-09-08 11:07 Service\Properties\Resources.resx
文件 1092 2009-09-08 11:07 Service\Properties\Settings.Designer.cs
文件 249 2009-09-08 11:07 Service\Properties\Settings.settings
文件 4312 2009-10-30 15:51 Service\Server.cs
文件 5203 2009-10-30 15:03 Service\Server.Designer.cs
文件 6022 2009-10-30 15:03 Service\Server.resx
文件 3841 2009-10-30 16:04 Service\Service.csproj
文件 168 2009-10-30 16:12 Service\Service.csproj.user
文件 1383 2009-10-30 16:04 WindowsFormsApplication2.sln
..A..H. 59392 2009-10-30 16:12 WindowsFormsApplication2.suo
目录 0 2009-10-30 14:43 Client\obj\Debug\TempPE
目录 0 2009-10-30 15:58 Client\obj\Release\Refactor
目录 0 2009-10-30 14:43 Client\obj\Release\TempPE
目录 0 2009-09-08 11:07 Service\obj\Debug\TempPE
目录 0 2009-09-15 09:51 Service\obj\Release\Refactor
............此处省略19个文件信息
相关资源
- C#编写的模拟操作系统虚拟内存分页请
- C#与Halcon联合编程,实现窗口鼠标滚轮
- asp.netC#定时发送邮件
- win7 win8 C# 音量控制 Volume
- TEA加密解密器C#开发
- 三层结构MVCC#框架
- C#笔试题 各大公司迅雷,腾讯,华为
- c#计算器实现 仿windows计算器
- 104协议dll源代码C#
- 101协议dll源码C#
- C#编写登录窗体,连接SQL,有登录、注
- c# TXT操作总结
- C#流程图绘制Netron Light
- c#文件发送一个服务器多个客户端
- C#文件夹的操作遍历文件夹
- c#调用微信扫一扫功能等
- C# 仓库管理系统 (C#)
- C#开发大全(基础卷)源码+C#开发大全
- c# 实现动态柱状图
- c#入门经典 第六版 地址 百度网盘
- testListBoxApp.rar
- 开源项目图片浏览查看wpf编码
- WinForm连接SQLServer 一份C#小代码
- 自动网络时间同步小工具
- Native Wifi C#
- C# openGL 纹理贴图
- C#socket通信调用Brother打印机客户端和
- c# api帮助文档
- ASP.NET写的转盘抽奖程序
- C#实现老板键功能(源码)
评论
共有 条评论