111,114
社区成员




IPAddress myIP = IPAddress.Parse("127.0.0.1");
myIP = IPAddress.Parse("10.0.64.103");//ScopeId = “myIP.ScopeId”引发了“System.Net.Sockets.SocketException”类型的异常
继续运行
sock.Bind(myServer); //未处理SocketException 在其上下文中,该请求的地址无效。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace SocketListin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private IPEndPoint myServer;
private IPAddress myIP = IPAddress.Parse("127.0.0.1");//报错
private Socket sock;
private bool check = true;
private Socket recSock;
/// <summary>
/// 开始监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStart_Click(object sender, EventArgs e)
{
//try
//{
//}
//catch
//{
// MessageBox.Show("IP格式不正确,重新输入!");
// return;
//}
try
{
Thread thread = new Thread(new ThreadStart(Listen));
thread.Start();
}
catch (Exception ex)
{
this.txtState.AppendText(ex.Message);
}
}
/// <summary>
/// 发送信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, EventArgs e)
{
try
{
Byte[] sendByte = new Byte[64];
string sendMsg = this.rchTxtSend.Text + "\r\n";
NetworkStream stream = new NetworkStream(recSock);
sendByte = System.Text.Encoding.BigEndianUnicode.GetBytes(sendMsg.ToCharArray());
stream.Write(sendByte, 0, sendByte.Length);
}
catch
{
MessageBox.Show("连接尚未建立,无法发送!");
return;
}
}
/// <summary>
/// 停止监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStop_Click(object sender, EventArgs e)
{
try
{
sock.Close();
this.txtState.AppendText("主机" + this.txtAddress.Text + "\r\n端口" + this.txtPort.Text + "\r\n停止监听......\r\n");
}
catch
{
MessageBox.Show("监听尚未开始,关闭无效!");
}
}
/// <summary>
/// 线程同步的方法
/// </summary>
private void Listen()
{
myIP = IPAddress.Parse("10.0.64.103");//报错,若继续执行则在Bind()处报错
myServer = new IPEndPoint(myIP,Int32.Parse(txtPort.Text));
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//myIP.s
sock.Bind(myServer);
sock.Listen(50);
this.txtState.AppendText("主机" + this.txtAddress.Text + " 端口" + this.txtPort.Text + " 开始监听......\r\n");
while (true)
{
recSock = sock.Accept();
if (recSock.Connected)
{
this.txtState.AppendText("与客户建立连接\r\n信息\r\n");
Thread recThread = new Thread(new ThreadStart(Round));
recThread.Start();
}
}
}
/// <summary>
///
/// </summary>
private void Round()
{
while (true)
{
Byte[] rec = new Byte[64];
NetworkStream stream = new NetworkStream(recSock);
stream.Read(rec, 0, rec.Length);
string recMessage = System.Text.Encoding.BigEndianUnicode.GetString(rec);
this.txtState.AppendText(recMessage + "\r\n");
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace SocketListin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private IPEndPoint myServer;
private IPAddress myIP = null;
private Socket sock;
private bool check = true;
private Socket recSock;
/// <summary>
/// 开始监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStart_Click(object sender, EventArgs e)
{
//try
//{
//}
//catch
//{
// MessageBox.Show("IP格式不正确,重新输入!");
// return;
//}
try
{
Thread thread = new Thread(new ThreadStart(Listen));
thread.Start();
}
catch (Exception ex)
{
this.txtState.AppendText(ex.Message);
}
}
/// <summary>
/// 发送信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, EventArgs e)
{
try
{
Byte[] sendByte = new Byte[64];
string sendMsg = this.rchTxtSend.Text + "\r\n";
NetworkStream stream = new NetworkStream(recSock);
sendByte = System.Text.Encoding.BigEndianUnicode.GetBytes(sendMsg.ToCharArray());
stream.Write(sendByte, 0, sendByte.Length);
}
catch
{
MessageBox.Show("连接尚未建立,无法发送!");
return;
}
}
/// <summary>
/// 停止监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStop_Click(object sender, EventArgs e)
{
try
{
sock.Close();
this.txtState.AppendText("主机" + this.txtAddress.Text + "\r\n端口" + this.txtPort.Text + "\r\n停止监听......\r\n");
}
catch
{
MessageBox.Show("监听尚未开始,关闭无效!");
}
}
/// <summary>
/// 线程同步的方法
/// </summary>
private void Listen()
{
myIP = IPAddress.Parse("10.0.64.103");
//myServer = new IPEndPoint(myIP,Int32.Parse(txtPort.Text));
myServer = new IPEndPoint(myIP,Int32.Parse(30000));
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//myIP.s
sock.Bind(myServer);
sock.Listen(50);
//this.txtState.AppendText("主机" + this.txtAddress.Text + " 端口" + this.txtPort.Text + " 开始监听......\r\n");
while (true)
{
recSock = sock.Accept();
if (recSock.Connected)
{
//this.txtState.AppendText("与客户建立连接\r\n信息\r\n");
Thread recThread = new Thread(new ThreadStart(Round));
recThread.Start();
}
}
}
/// <summary>
///
/// </summary>
private void Round()
{
while (true)
{
Byte[] rec = new Byte[64];
NetworkStream stream = new NetworkStream(recSock);
stream.Read(rec, 0, rec.Length);
string recMessage = System.Text.Encoding.BigEndianUnicode.GetString(rec);
//this.txtState.AppendText(recMessage + "\r\n");
}
}
}
}
Control。CheckForIllegalCrossThreadCalls = false