服务器端:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace testSocket2
{
class Program
{
public static string data = null;
public static void StartListening() {
byte[] bytes = new Byte[1024];
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress,11000);
Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
listener.Bind(localEndPoint);
listener.Listen(10);
while (true) {
Console.WriteLine("Waiting for a connection...");
Socket handler = listener.Accept();
data = null;
while(true){
bytes=new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if(data.IndexOf("<EOF>")>-1){
break;
}
}
Console.WriteLine("Text recieved:{0}",data);
byte[] msg = Encoding.ASCII.GetBytes(data);
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception e) {
Console.WriteLine(e.ToString());
}
Console.WriteLine("/nHit enter to continue...");
Console.Read();
}
public static int Main(string[] args)
{
StartListening();
return 0;
}
}
}
客户端:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace testSocket3
{
class Program
{
public static void StartClient() {
byte[] bytes = new byte[1024];
try
{
IPHostEntry ipHostInfo = Dns.Resolve("sict64");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sender.Connect(remoteEP);
Console.WriteLine("Socket connected to {0}", sender.RemoteEndPoint.ToString());
byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
int bytesSent = sender.Send(msg);
int bytesRec = sender.Receive(bytes);
Console.WriteLine("Echoed test={0}", Encoding.ASCII.GetString(bytes, 0, bytesRec));
sender.Shutdown(SocketShutdown.Both);
sender.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
catch (ArgumentNullException e)
{
Console.WriteLine(e.ToString());
}
catch (SocketException el)
{
Console.WriteLine(el.ToString());
}
catch (Exception ele) {
Console.WriteLine(ele.ToString());
}
}
public static int Main(string[] args)
{
StartClient();
return 0;
}
}
}