首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

新人Socket.Accept()

2012-12-18 
新人求助Socket..Accept()我是跟着这位大哥写的sockethttp://blog.csdn.net/tuwen/article/details/536562

新人求助Socket..Accept()
我是跟着这位大哥写的socket
http://blog.csdn.net/tuwen/article/details/5365621

  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();

  }//end Form

  private void button1_Click(object sender, EventArgs e)
  {
  int serverMessageLength;//用于表示客户端发送信息的长度
  byte[] data = new byte[1024];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组
  IPAddress serverIP=IPAddress.Parse("192.168.0.203");
  IPEndPoint serverIPEndPoint = new IPEndPoint(serverIP, 9050);
  Socket newSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  newSock.Bind(serverIPEndPoint);//绑定
  newSock.Listen(10);//监听
  txtServerMessage.Text += "Waiting for a client";
  Socket client = newSock.Accept();//当有可用的客户端链接尝试时执行,并返回一个新的socket,用于与客户端之间的通信
  IPEndPoint clientIP = (IPEndPoint)client.RemoteEndPoint;
  txtServerMessage.Text += "\n Connect with client:" + clientIP.Address + " at port:" + clientIP.Port;
  data = Encoding.ASCII.GetBytes("Welcome here!");
  client.Send(data, data.Length, SocketFlags.None);//发送信息
  while (true)
  {
  data = new byte[1024];
  serverMessageLength = client.Receive(data);
  txtServerMessage.Text += " serverMessageLength" + serverMessageLength.ToString();
  if (serverMessageLength == 0)//当信息长度为0,说明客户端链接断开
  break;
  txtServerMessage.Text += Encoding.ASCII.GetString(data, 0, serverMessageLength);
  client.Send(data, serverMessageLength, SocketFlags.None);
  }
  txtServerMessage.Text += "Disconnected from " + clientIP.Address.ToString();
  client.Close();
  newSock.Close();
  }
  }//end Class

程序运行到红色的部分,就不再执行了,卡住了,为什么啊?我网上搜了其他的一些实力,也差不多这样,声明之后绑定IP地址,然后监听,然后就创建新的SOCKET,但是我这个却运行不了错在哪里啊?




newSock{System.Net.Sockets.Socket}
AddressFamilyInterNetwork
Available0
BlockingTRUE
ConnectedFALSE
DontFragmentTRUE
EnableBroadcast“newSock.EnableBroadcast”引发了“System.Net.Sockets.SocketException”类型的异常
ExclusiveAddressUseFALSE
Handle1036
IsBoundTRUE
LingerState{System.Net.Sockets.LingerOption}
LocalEndPoint{192.168.0.203:9050}
MulticastLoopback“newSock.MulticastLoopback”引发了“System.Net.Sockets.SocketException”类型的异常
NoDelayFALSE
ProtocolTypeTcp
ReceiveBufferSize8192
ReceiveTimeout0
RemoteEndPoint“newSock.RemoteEndPoint”引发了“System.Net.Sockets.SocketException”类型的异常
SendBufferSize8192
SendTimeout0
SocketTypeStream
Ttl64
UseOnlyOverlappedIOFALSE
静态成员
非公共成员


这个是红色那段程序对newSocket对象的监听。

热点排行