您的位置:首页 > 其它

socket服务端和客户端通讯简单例子

2012-11-13 09:59 387 查看
/*client*/
public partial class FormClient : Form
{

public FormClient()
{
InitializeComponent();
}

private void btnSend_Click(object sender, EventArgs e)
{
Client client = new Client(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8500));
lblMsg.Text = "服务器IP及端口:" + client.socket.RemoteEndPoint.ToString();
try
{
//发送消息
client.Send(tbMsg.Text);
listBox1.Items.Add(string.Format("{0}发送信息:{1}", client.socket.LocalEndPoint, tbMsg.Text));
//接收
string recvMsg = client.Receive();
listBox1.Items.Add(recvMsg);
listBox1.Items.Add("");
}
finally
{
client.Close();
}
}

public class Client
{
private const int buffer = 1024;
public Socket socket;
public Client(IPEndPoint iep)
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(iep);
}
public string Receive()
{
byte[] data = new byte[buffer];
int recv = socket.Receive(data);
return Encoding.UTF8.GetString(data, 0, recv);
}
public void SendFile(string fileName)
{
socket.SendFile(fileName);
}
public void Send(string msg)
{
byte[] data = Encoding.UTF8.GetBytes(msg);
socket.Send(data);
}
public void Close()
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
}

}

/*server*/

public partial class FormService : Form
{
public FormService()
{
InitializeComponent();

Thread serThread = new Thread(new ThreadStart(Listen));
serThread.Start();
}

private void Listen()
{
const int buffer = 10240;
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint iep = new IPEndPoint(ip, 8500);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(iep);
byte[] cliData = new byte[buffer];

socket.Listen(10);
lblMsg.Text = string.Format("开始在{0}{1}上监听", iep.Address.ToString(), iep.Port.ToString());
Socket client;
int recv;

while (true)
{
client = socket.Accept();
recv = client.Receive(cliData);

//接收消息
string cliMsg = Encoding.UTF8.GetString(cliData, 0, recv);
cliMsg = DateTime.Now.ToShortTimeString() + "," + client.RemoteEndPoint.ToString() + "发来信息:" + cliMsg;
this.listBox1.Items.Add(cliMsg);

string serMsg = "服务器返回信息:OK.";
byte[] serByte = Encoding.UTF8.GetBytes(serMsg);
client.Send(serByte);
}

}

private void FormService_FormClosing(object sender, FormClosingEventArgs e)
{
Process.GetCurrentProcess().Kill();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: