| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 634 人关注过本帖
标题:一个聊天程序问题
只看楼主 加入收藏
c_23929427
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-22
收藏
 问题点数:0 回复次数:4 
一个聊天程序问题

写一个聊天的程序可是有点问题,帮忙看看
public void Listen()
{
try
{
TcpListener tcpl = new TcpListener(8080);
tcpl.Start();
toolStripStatusLabel1.Text = "正在监听。。。";
while (true)
{
Socket s = tcpl.AcceptSocket();//运行到这里就不动了

byte[] stream = new byte[80];
int i = s.Receive(stream);
string message = System.Text.Encoding.UTF8.GetString(stream);
richTextBox1.AppendText(message);

}
}
catch (System.Security.SecurityException)
{
MessageBox.Show("防火墙错误", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
catch(Exception)
{
toolStripStatusLabel1.Text = "停止监听";
}
}

谢谢拉!!!

搜索更多相关主题的帖子: tcpl TcpListener 聊天 new 
2006-08-04 16:36
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
[CODE]

thread thread=new thread(new threadstart(Listen));
thread.start();


void Listen()
{
using(Socket listener=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp))
{
listener.Bind(new IPEndPoint(IPAddress.Any,8080));
listener.Listen(backlog);

using(Socket socket=listener.Accept())
{
Stream netStream=new NetworkStream(socket);
StreamReader reader=new StreamReader(netStream);
string result=reader.ReadToEnd();

Invoke(new displayinfodelegate(displayinfo),new object[]{result});
}
}

}

void displayinfo(string str)
{
richTextBox1.AppendText(str);
}
delegate void displayinfodelegate(string str);

[/CODE]

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-04 16:54
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 

一看楼上的手笔就自叹不如啊.小声地问using(Socket socket=listener.Accept())的这种用法跟try有什么区别?

楼主的问题是因为listener没有监听到连接吧.可以用try试试看.


实践、学习、再实践、再学习......
2006-08-04 17:30
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
以下是引用swc在2006-8-4 17:30:14的发言:

一看楼上的手笔就自叹不如啊.小声地问using(Socket socket=listener.Accept())的这种用法跟try有什么区别?

楼主的问题是因为listener没有监听到连接吧.可以用try试试看.

上面用try catch finall更好阿 在finally裡面寫dispose

我懶得多寫些代碼才寫using()
它也會在屁股後面dispose
不過這個類好像必須繼承idisposble接口才能用using


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-04 17:48
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
以下是引用chenjin145在2006-8-4 16:54:32的发言:
[CODE]

thread thread=new thread(new threadstart(Listen));
thread.start();


void Listen()
{
using(Socket listener=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp))
{
listener.Bind(new IPEndPoint(IPAddress.Any,8080));
listener.Listen(backlog);

using(Socket socket=listener.Accept())
{
Stream netStream=new NetworkStream(socket);
StreamReader reader=new StreamReader(netStream);
string result=reader.ReadToEnd();

Invoke(new displayinfodelegate(displayinfo),new object[]{result});
}
}

}

void displayinfo(string str)
{
richTextBox1.AppendText(str);
}
delegate void displayinfodelegate(string str);

[/CODE]

写的真不错


此号自封于2006年11月30日
2006-08-07 10:01
快速回复:一个聊天程序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058822 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved