客户端:
//发送数据:
private void button1_Click(object sender, EventArgs e)
{
byte[] bytes = new byte[1024];
Socket sk1, sk2;
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);
sk1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sk1.Connect(remoteEP);
byte[] msg = Encoding.Unicode.GetBytes(textBox1.Text);
int bytesSent = sk1.Send(msg);
int bytesRec = sk1.Receive(bytes);//接收返回数据(可略)
this.textBox2.Text= Encoding.Unicode.GetString(bytes, 0, bytesRec);
}
catch(Exception p)
{
MessageBox.Show(p.ToString());
}
}
服务器端:
Thread th1;
th1 = new Thread(StartListening);
th1.Start();
public void StartListening()
{
// Data buffer for incoming data.
byte[] bytes = new Byte[1024];
// Establish the local endpoint for the socket.
// Dns.GetHostName returns the name of the
// host running the application.
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
// Create a TCP/IP socket.
Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
// Bind the socket to the local endpoint and
try
{
listener.Bind(localEndPoint);
listener.Listen(10);
// Start listening for connections.
while (true)
{
this.label1.Text="Waiting for a connection";
// Program is suspended while waiting for an incoming connection.
Socket handler = listener.Accept();
data = null;
// An incoming connection needs to be processed.
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.Unicode.GetString(bytes, 0, bytesRec);
string dt = data;
this.textBox1.Text = dt;
// Show the data
//this.textBox1.Text = data;
// Echo the data back to the client.
byte[] msg = Encoding.Unicode.GetBytes(data);
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}