一个奇怪的问题,一定给分,高手来看看吧。 第一个问题,我试验过了,在我的机器上运行地很好,没有问题啊.client端可以连n次...第二个问题...我也试过了,不仅可以catch到,而且可以break.你地机器好奇怪哦呵呵.顺便,socket有个属性connected可以用来判断是否处于连接状态. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 算了算了,我就是不行啊?你们是粘贴了上面两段代码吗?不是下面那个用socket写的客户端哦!我想破头都不知道为什么,不知道是不是我的笔记本没联在局域网中,我原来是在校网中配置了的。不管了,我把服务器那一段改了,凑乎着用。我把第二个while改成while(s.connected){try{s.Receive(RecvBytes,RecvBytes.Length,0);}catch{break;}try{s.Send(RecvBytes,RecvBytes.Length,0);}catch{break;}RecvBytes=new byte[256];}给分了,谢谢各位!ps:请问各位,c#里有像setnull这种东西吗?就想把上面的RecvBytes里的东西全部清掉。 我写的,给你看一下 //这里是发送的 listener = new TcpListener(port); listener.Start(); statusBarPanel1.Text = "开始监听......"; Thread thread = new Thread(new ThreadStart(receive)); thread.Start(); private void receive() { sock = listener.AcceptSocket(); if(sock.Connected) { statusBarPanel1.Text = "与客户建立连系...."; string str = richTextBox1.Text; byte [] bytee = System.Text.Encoding.BigEndianUnicode.GetBytes(str.ToCharArray()); sock.Send(bytee,0,bytee.Length,0); //接受信息 while(!control) { NetworkStream stream = new NetworkStream(sock); byte [] by = new Byte[1024]; int i = sock.Receive(by,by.Length,0); string ss = System.Text.Encoding.BigEndianUnicode.GetString(by); richTextBox2.AppendText(ss); j = richTextBox1.Lines.Length; if(j>= 2) { //如果不是@@@@@@@ if(richTextBox2.Lines[j-2].ToString() !=" @@@@@@") { filestream = new FileStream(richTextBox2.Lines[j-2].ToString(),FileMode.Open,FileAccess.Read); //读文件 byte [] bb = new byte[1024]; while ((number = filestream.Read(bb,0,1024) ) != 0) { stream.Write(bb,0,number); stream.Flush(); } //文件发送完成送EOF string st ="<EOF>"; byte [] byt = new byte[1024]; byt = System.Text.Encoding.ASCII.GetBytes(st.ToCharArray()); sock.Send(byt,0,byt.Length,0); filestream.Close(); }//if@@@@@@ else if(richTextBox2.Lines[j-2].ToString() == "@@@@@@") { control = true; } }//if(>=2) } }//if(sock.Connected) }//这里是接收端的private void connectFuWu() { int port = 0; IPAddress myIP = IPAddress.Parse("127.0.0.1"); try { myIP = IPAddress.Parse(textBox2.Text); } catch { MessageBox.Show("你输入的IP地址格式不正确"); } try { port = Int32.Parse(textBox3.Text); } catch { MessageBox.Show("请输入整数。"); } try { if(textBox1.Text != ""&&textBox2.Text=="") { client.Connect (textBox1.Text,port); statusBarPanel1.Text = "与服务器建立连接"; //获取网络流 netStream = client.GetStream(); byte [] bb = new byte[6400]; //读数据(服务器文件名) i = netStream.Read (bb,0,6400); string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb); richTextBox1.AppendText(ss); int j = richTextBox1.Lines.Length; for(int k =0;k<j-1;k++) { comboBox1.Items.Add(richTextBox1.Lines[k]); } comboBox1.Text = comboBox1.Items[0].ToString(); } if(textBox1.Text == ""&&textBox2.Text != "") { client.Connect(myIP,port); statusBarPanel1.Text = "与服务器建立连接"; //获取网络流 netStream = client.GetStream(); byte [] bb = new byte[6400]; //读数据(服务器文件名) i = netStream.Read (bb,0,6400); string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb); richTextBox1.AppendText(ss); int j = richTextBox1.Lines.Length; for(int k =0;k<j-1;k++) { comboBox1.Items.Add(richTextBox1.Lines[k]); } comboBox1.Text = comboBox1.Items[0].ToString(); } if(textBox1.Text !=""&&textBox2.Text !="") { client.Connect(myIP,port); statusBarPanel1.Text = "与服务器建立连接"; //获取网络流 netStream = client.GetStream(); byte [] bb = new byte[6400]; //读数据(服务器文件名) i = netStream.Read (bb,0,6400); string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb); richTextBox1.AppendText(ss); int j = richTextBox1.Lines.Length; for(int k =0;k<j-1;k++) { comboBox1.Items.Add(richTextBox1.Lines[k]); } comboBox1.Text = comboBox1.Items[0].ToString(); } } catch(Exception err) { MessageBox.Show(err.Message); } }//你可以把filestream换成图形就可以了System.DrawingGraphics g;g = this.CreateGraphics(); c#与matlab 混合编程求教 Dictionary 序列化的问题 简单正则 数据集更新的问题 如何将DataTable中数据Insert到SQL Server的非空表中?谢谢! 哪位能帮我说一下GIS的ini文件中各个字段的含义 高分求用C#制作不规则窗体,要求在24色以上也能显示(在线急求) 关于C#中{0}和{1}的问题!初次在此发贴,问题对你易对我难,求救了! C#调用vc++时,关于位域的转换 asp.net mvc webapi 怎么实现带参数跳转 各位帮忙!关于C#中的"接口"的问题,谢谢! 如何从dataset中读出数值型的数据。
你们是粘贴了上面两段代码吗?不是下面那个用socket写的客户端哦!
我想破头都不知道为什么,不知道是不是我的笔记本没联在局域网中,我原来是在校网中配置了的。不管了,我把服务器那一段改了,凑乎着用。我把第二个while改成
while(s.connected)
{
try
{
s.Receive(RecvBytes,RecvBytes.Length,0);
}
catch
{
break;
}
try
{
s.Send(RecvBytes,RecvBytes.Length,0);
}
catch
{
break;
}
RecvBytes=new byte[256];
}给分了,谢谢各位!
ps:请问各位,c#里有像setnull这种东西吗?就想把上面的RecvBytes里的东西全部清掉。
//这里是发送的
listener = new TcpListener(port);
listener.Start();
statusBarPanel1.Text = "开始监听......";
Thread thread = new Thread(new ThreadStart(receive));
thread.Start(); private void receive()
{
sock = listener.AcceptSocket();
if(sock.Connected)
{
statusBarPanel1.Text = "与客户建立连系....";
string str = richTextBox1.Text;
byte [] bytee = System.Text.Encoding.BigEndianUnicode.GetBytes(str.ToCharArray());
sock.Send(bytee,0,bytee.Length,0);
//接受信息
while(!control)
{
NetworkStream stream = new NetworkStream(sock);
byte [] by = new Byte[1024];
int i = sock.Receive(by,by.Length,0);
string ss = System.Text.Encoding.BigEndianUnicode.GetString(by);
richTextBox2.AppendText(ss);
j = richTextBox1.Lines.Length;
if(j>= 2)
{
//如果不是@@@@@@@
if(richTextBox2.Lines[j-2].ToString() !=" @@@@@@")
{
filestream = new FileStream(richTextBox2.Lines[j-2].ToString(),FileMode.Open,FileAccess.Read);
//读文件
byte [] bb = new byte[1024];
while ((number = filestream.Read(bb,0,1024) ) != 0)
{
stream.Write(bb,0,number);
stream.Flush();
}
//文件发送完成送EOF
string st ="<EOF>";
byte [] byt = new byte[1024];
byt = System.Text.Encoding.ASCII.GetBytes(st.ToCharArray());
sock.Send(byt,0,byt.Length,0);
filestream.Close();
}//if@@@@@@
else if(richTextBox2.Lines[j-2].ToString() == "@@@@@@")
{
control = true;
}
}//if(>=2)
}
}//if(sock.Connected)
}
//这里是接收端的
private void connectFuWu()
{
int port = 0;
IPAddress myIP = IPAddress.Parse("127.0.0.1");
try
{
myIP = IPAddress.Parse(textBox2.Text);
}
catch
{
MessageBox.Show("你输入的IP地址格式不正确");
}
try
{
port = Int32.Parse(textBox3.Text);
}
catch
{
MessageBox.Show("请输入整数。");
}
try
{
if(textBox1.Text != ""&&textBox2.Text=="")
{
client.Connect (textBox1.Text,port);
statusBarPanel1.Text = "与服务器建立连接";
//获取网络流
netStream = client.GetStream();
byte [] bb = new byte[6400];
//读数据(服务器文件名)
i = netStream.Read (bb,0,6400);
string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb);
richTextBox1.AppendText(ss);
int j = richTextBox1.Lines.Length;
for(int k =0;k<j-1;k++)
{
comboBox1.Items.Add(richTextBox1.Lines[k]);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
if(textBox1.Text == ""&&textBox2.Text != "")
{
client.Connect(myIP,port);
statusBarPanel1.Text = "与服务器建立连接";
//获取网络流
netStream = client.GetStream();
byte [] bb = new byte[6400];
//读数据(服务器文件名)
i = netStream.Read (bb,0,6400);
string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb);
richTextBox1.AppendText(ss);
int j = richTextBox1.Lines.Length;
for(int k =0;k<j-1;k++)
{
comboBox1.Items.Add(richTextBox1.Lines[k]);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
if(textBox1.Text !=""&&textBox2.Text !="")
{
client.Connect(myIP,port);
statusBarPanel1.Text = "与服务器建立连接";
//获取网络流
netStream = client.GetStream();
byte [] bb = new byte[6400];
//读数据(服务器文件名)
i = netStream.Read (bb,0,6400);
string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb);
richTextBox1.AppendText(ss);
int j = richTextBox1.Lines.Length;
for(int k =0;k<j-1;k++)
{
comboBox1.Items.Add(richTextBox1.Lines[k]);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
}
catch(Exception err)
{
MessageBox.Show(err.Message);
}
}
//你可以把filestream换成图形就可以了
System.Drawing
Graphics g;g = this.CreateGraphics();