C# Socket 编程初探

主要实现函数过程如下  

//接受函数监听端口,接受数据
  public void beginListen()
  {
   IPHostEntry ihe = new IPHostEntry();
   ihe = System.Net.Dns.Resolve(Dns.GetHostName());//获取服务器(本机)ip地址
   IPEndPoint iep = new IPEndPoint(ihe.AddressList[0],port);
   lisSocket = new Socket(AddressFamily.InterNetwork,System.Net.Sockets.SocketType.Stream,System.Net.Sockets.ProtocolType.Tcp);
   byte[] revbyte = new byte[255];
   lisSocket.Bind(iep);
   while(true)
   {
    try
    {
     lisSocket.Listen(100);
     Socket newSocket = lisSocket.Accept();
     //EndPoint fromEP = lisSocket.RemoteEndPoint; //此句抛出Exception
     newSocket.Receive(revbyte);
     string allmsg = DateTime.Now.ToString();
     allmsg += " from/n" + newSocket.RemoteEndPoint.ToString() + ":/n";
     allmsg += Encoding.Default.GetString(revbyte) + "/n";
     this.revbox.Text += "/n/n" + allmsg;
    }
    catch(SocketException ex)
    {
     MessageBox.Show(ex.ToString());
    }
   }
  }

//发送函数
  private void beginsend()
  {
   IPAddress ipa = IPAddress.Parse(ipaddt.Text);
   IPEndPoint iep = new IPEndPoint(ipa,port);
   byte[] msg;
   if(sndbox.Text.Length >= 255)
   {
    MessageBox.Show("");
   }
   //创建发送Socket
   try
   {
    Socket sndSocket = new Socket(AddressFamily.InterNetwork,System.Net.Sockets.SocketType.Stream,System.Net.Sockets.ProtocolType.Tcp);
    sndSocket.Connect(iep);
    msg = Encoding.Default.GetBytes(sndbox.Text);
    sndSocket.Send(msg);
    sndSocket.Shutdown(SocketShutdown.Both);
    sndSocket.Close();
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.ToString());
   }
  }

  private void Form1_Load(object sender, System.EventArgs e)
  {
   this.MaximizeBox=false;
   try
   {
    newthread = new Thread(new ThreadStart(beginListen));
    newthread.Start();
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.ToString());
   }
  }

  private void button1_Click(object sender, System.EventArgs e)
  {
   if(ipaddt.Text == "")
   {
    MessageBox.Show("请输入IP地址");
   }
   else
   beginsend();
  }

  private void button2_Click(object sender, System.EventArgs e)
  {
   this.revbox.Text = ipaddt.SelectionStart.ToString();
   sndbox.Text = sndbox.Text.Insert(this.sndbox.SelectionStart,"ahahaha");
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值