理论什么的bilibala的就是自己百度吧
推荐一篇不错的关于socket的文章
http://www.cnblogs.com/sunway/archive/2010/01/29/1659074.html
其实我也只是刚刚完成了端口监听这一项,其实主要就是获取本地的IP地址
IPAddress myIP;
string ipString = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1].ToString();//获取本机IP地址
myIP = IPAddress.Parse(ipString);
其中有些问题就是AddressList[]的问题,刚开始一直写的是AddressList[0],结果每次取得的都是错误的IP,最后查资料才知道0是IPv6的格式,而1是IPv4的格式,这样才把主要问题给解决了。
最后附上全部代码吧
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using System.Net;
10 using System.Threading;
11 using System.Net.Sockets;
12
13 namespace socket测试WinForm
14 {
15 public partial class Form1 : Form
16 {
17 public Form1()
18 {
19 InitializeComponent();
20 }
21 IPAddress myIP;
22 private void button1_Click(object sender, EventArgs e)
23 {
24 try
25 {
26 IPHostEntry entry = new IPHostEntry();
27 string ipString = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1].ToString();//获取本机IP地址
28 myIP = IPAddress.Parse(ipString);
29 txtState.Text = "";
30 txtState.AppendText("主机开始监听.....\r\n");
31 TcpListener listener = new TcpListener(myIP ,Convert.ToInt32(textBox2.Text));
32 listener.Start();
33 }
34 catch(Exception ez)
35 {
36 MessageBox.Show(ez.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
37 return;
38 }
39 }
40 }
41 }
有不足的还请大家指正吧