第一章:服务端
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Reflection;
using System.Resources;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.InteropServices;
Thread mythread;
Socket socket;
private void BeginListen()
{
IPAddress ServerIp = IPAddress.Parse(WorkClass.get_IP2());
IPEndPoint iep = new IPEndPoint(ServerIp, 11000);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Byte[] byteMessage = new Byte[256];
socket.Bind(iep);
while (true)
{
try
{
socket.Listen(5);
Socket newSocket = socket.Accept();
string sTime = DateTime.Now.ToShortTimeString();
IPEndPoint newip = (IPEndPoint)newSocket.RemoteEndPoint;
TreeNode it1 = new TreeNode(newip.Address.ToString(), 3, 3);
it1.Tag = newSocket;
treeView1.Invoke(new RunSub(AddSubNode),treeView1.Nodes[1],it1);
}
catch (SocketException ex)
{
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();
mythread.IsBackground = true;
}
catch (System.Exception er)
{
MessageBox.Show(er.Message);
}
}
public static bool SendString(Socket s, string SendMessage)//发送string
{
string sendMsg = SendMessage + "<EOF>";
byte[] ToSend = System.Text.Encoding.UTF32.GetBytes(sendMsg.ToCharArray());
try
{
s.Send(ToSend);
return true;
}
catch(Exception exp)
{
return false;
}
}
public static string ReadString(Socket s)//接收string
{
string str = "";
byte[] byteMessage = new byte[1024];
try
{
int n = s.Receive(byteMessage);
while (n > 0)
{
string ss = System.Text.Encoding.UTF32.GetString(byteMessage, 0, n);
int x = ss.IndexOf("<EOF>");
if (x != -1)
{
str += ss.Substring(0, x);
break;
}
else
{
str += ss;
}
byteMessage = new byte[1024];
n = s.Receive(byteMessage);
}
}
catch
{
}
return str;
}
string recvAll = "";
recvAll = WorkClass.ReadString(newSocket);
if (recvAll == "")//接收数据失败
{
treeView1.SelectedNode.Remove();
listView1.Items.Clear();
}
else
{
//发送成功
}
string msg = "GetDirectoryFile?" + mypath;
if (WorkClass.SendString(newSocket, msg))
{
//发送成功
}
else
{
//发送失败
}