服务器端程序:
using System;
using System.Net;
using System.Net.Sockets;
using System.Collections.Generic;
using System.Text;
namespace net
{
class Program
{
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 5566);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(ipEnd);
socket.Listen(10);
Console.Write("Waiting for a client");
Socket client = socket.Accept();
IPEndPoint ipEndClient = (IPEndPoint)client.RemoteEndPoint;
Console.Write("Connect with {0} at port {1}", ipEndClient.Address, ipEndClient.Port);
string welcome = "Welcome to my server";
data = Encoding.ASCII.GetBytes(welcome);
client.Send(data, data.Length, SocketFlags.None);
while (true)
{
data = new byte[1024];
recv = client.Receive(data);
if (recv == 0)
break;
Console.Write(Encoding.ASCII.GetString(data, 0, recv));
client.Send(data, recv, SocketFlags.None);
}
Console.Write("Disconnect form{0}", ipEndClient.Address);
client.Close();
socket.Close();
}
}
}
客户端程序:
using System;
using System.Net;
using System.Net.Sockets;
using System.Collections.Generic;
using System.Text;
namespace client
{
class Program
{
static void Main(string[] args)
{
byte[] data = new byte[1024];
string input, stringData;
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint ipEnd = new IPEndPoint(ip, 5566);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(ipEnd);
}
catch (SocketException e)
{
Console.Write("Fail to connect server");
Console.Write(e.ToString());
return;
}
int recv = socket.Receive(data);
stringData = Encoding.ASCII.GetString(data,0,recv);
Console.Write(stringData);
while (true)
{
input = Console.ReadLine();
if (input == "exit")
{
break;
}
socket.Send(Encoding.ASCII.GetBytes(input));
data = new byte[1024];
recv = socket.Receive(data);
stringData = Encoding.ASCII.GetString(data,0,recv);
Console.Write(stringData);
}
Console.Write("disconnect from server");
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
}
}