第一个问题,我试验过了,在我的机器上运行地很好,没有问题啊.
client端可以连n次...
第二个问题...我也试过了,不仅可以catch到,而且可以break.你地
机器好奇怪哦呵呵.
顺便,socket有个属性connected可以用来判断是否处于连接状态.
client端可以连n次...
第二个问题...我也试过了,不仅可以catch到,而且可以break.你地
机器好奇怪哦呵呵.
顺便,socket有个属性connected可以用来判断是否处于连接状态.
解决方案 »
- 关于C#的word格式、txt格式的资料。
- 数据库备份与还原
- 高手指点,数据库合并问题!
- [求助]Gridview的显示和页面交互效果
- .NET 中的SOAP等问题请教!!!!
- 为什么我的vs.net 2003不能打开C#项目文件(webform)?
- 这里有做工作流的么?
- 帮帮忙呀~~怎样使GridView模板列中的textbox都能够触发textbox1_textchanged事件~~
- 能否用DllImport调用一个exe文件?谢谢!
- 终极菜鸟问题:C#是微软公司继Visual C++后推出的又一款软件开发工具,请问,C#是什么意思,怎样叫(发音)?
- 各位帮忙!关于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();