socket简单问题????

qiekong 2006-07-07 02:47:34
....
sock.bind(server);
sock.Listen(10);

accsocket = sock.Accept();
.....

执行到sock.Accept()时,就不再执行下面的语句
我在执行中查到accsocket为空对象?????????
...全文
271 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeremychen001181 2006-07-16
  • 打赏
  • 举报
回复
那就是因为accSock根本就是NULL值

你或许可以参考一下我的代码:

// Create proxy erver socket
using ( this.m_proxySocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,ProtocolType.Tcp) )
{
this.m_proxySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000);

// call the Listen method to listen for and queue incoming connection requests.
this.m_proxySocket.Bind( new IPEndPoint(GetHostIP(), this.m_port) );
this.m_proxySocket.Listen( this.m_port );

// Display start message
Console.WriteLine("ProxyServer started at port " + this.m_port);
Console.WriteLine("ProxyServer ready for accepting incoming connections...");

// ProxyConnect endless loop
while(true)
{
// waiting for client
Socket clientConnect = this.m_proxySocket.Accept();
clientConnect.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);

if (!ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), clientConnect))
Console.WriteLine("Unable to queue ThreadPool request.");
}
}

希望有所帮助
qiekong 2006-07-13
  • 打赏
  • 举报
回复
private void smessage_Click(object sender, System.EventArgs e)
{
Byte[] buffer = new Byte[64];
String send = smessage.Text +"\r\n";
NetworkStream netStream = new NetworkStream(accSock); 这一句报错
buffer = Encoding.Default.GetBytes(send.ToCharArray());
netStream.Write(buffer,0,buffer.Length);
}
jeremychen001181 2006-07-08
  • 打赏
  • 举报
回复
楼主要指明
是在哪一句报出的什么样的异常
qiekong 2006-07-07
  • 打赏
  • 举报
回复
我在学,现在只是单线程
henryfan1 2006-07-07
  • 打赏
  • 举报
回复
当你点击发送时如何确定accSock已经接收请求?
你的代码也有问题,如果多个请求accSock只是最后一个请求,accSock也会有线程安全.
看下MSDN Socket的帮助.
seaonce 2006-07-07
  • 打赏
  • 举报
回复
http://www.xiaopixie.com/web/news.aspx?id=162
qiekong 2006-07-07
  • 打赏
  • 举报
回复
下面的请求不正确吗?
private void smessage_Click(object sender, System.EventArgs e)
{
Byte[] buffer = new Byte[64];
String send = smessage.Text +"\r\n";
NetworkStream netStream = new NetworkStream(accSock);
buffer = Encoding.Default.GetBytes(send.ToCharArray());
netStream.Write(buffer,0,buffer.Length);
}
qiekong 2006-07-07
  • 打赏
  • 举报
回复
提供几个网站把
henryfan1 2006-07-07
  • 打赏
  • 举报
回复
accsocket = sock.Accept();
这一句是挂起,直到有请求才往下走.
当没有往下走时就说明没有任何请求,accsocket当然是空值.
Knight94 2006-07-07
  • 打赏
  • 举报
回复
你的写法不对,还是看看msdn中的sample,或者去网上找个例子看看。
Knight94 2006-07-07
  • 打赏
  • 举报
回复
你这部分是服务器端,还是客户端?
qiekong 2006-07-07
  • 打赏
  • 举报
回复
这是不分代码:
private void smessage_Click(object sender, System.EventArgs e)
{
Byte[] buffer = new Byte[64];
String send = smessage.Text +"\r\n";
NetworkStream netStream = new NetworkStream(accSock);
buffer = Encoding.Default.GetBytes(send.ToCharArray());
netStream.Write(buffer,0,buffer.Length);
}


private void synmethod()
{

Server = new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0],Int32.Parse(port.Text));
Sock = new Socket(Server.AddressFamily,SocketType.Stream,ProtocolType.Tcp);
Sock.Bind(Server);
Sock.Listen(10);

accSock = Sock.Accept();

if(Sock.Connected)
{
serverstate.AppendText("与服务器建立连接\r");
while(check)
{
Byte[] buffer = new Byte[64];
NetworkStream netStream = new NetworkStream(accSock);
netStream.Read(buffer,0,buffer.Length);
String RecMessage = Encoding.Default.GetString(buffer);
rmessage.AppendText(RecMessage+"\r\n");
}
}
}
qiekong 2006-07-07
  • 打赏
  • 举报
回复
有请求,错误提示为accsocket不能为空
Knight94 2006-07-07
  • 打赏
  • 举报
回复
那你的端口是否有socket请求呢

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧