一)客户端开发
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 mys
{
public partial class Form1 : Form
{
public delegate void deleg(string netmessage);//声明一个委托
public Form1()
{
InitializeComponent();
}
public void setText(string netmessage)
{
richTextBox1.AppendText(netmessage);
}
private void receive() { //网络中接受数据
try
{
while (check)
{
Byte[] rec = new Byte[64];
NetworkStream netstream = new NetworkStream(connectsock);
netstream.Read(rec, 0, rec.Length);
string recmessage = System.Text.Encoding.BigEndianUnicode.GetString(rec);
// MessageBox.Show(recmessage);
Invoke(new deleg(setText), recmessage);
}
}
catch (Exception ee) { MessageBox.Show(ee.Message); }
}
private void button1_Click(object sender, EventArgs e) //获得连接,并启动线程
{
try
{
myip = IPAddress.Parse(textBox1.Text);
}
catch { MessageBox.Show("ip error"); }
try {
myserver = new IPEndPoint(myip,Int32.Parse(textBox2.Text));
connectsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
connectsock.Connect(myserver);
textBox3.AppendText("success");
Thread thread = new Thread(new ThreadStart(receive));
thread.Start();
}
catch (Exception ee) { MessageBox.Show(ee.Message); }
}
private void button3_Click(object sender, EventArgs e) //关闭连接
{
try {
connectsock.Close();
textBox3.AppendText("stop");
}
catch { MessageBox.Show("invalid connect"); }
}
private void button2_Click(object sender, EventArgs e) //发送信息
{
try
{
Byte[] sendbyte = new Byte[64];
string send = richTextBox2.Text + "/r/n";
NetworkStream netstream = new NetworkStream(connectsock);
sendbyte = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
netstream.Write(sendbyte, 0, sendbyte.Length);
netstream.Flush();
}
catch { MessageBox.Show("invalid connect"); }
}
}
}
二)服务器开发
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 myc
{
public partial class Form1 : Form
{
private IPAddress myip = IPAddress.Parse("127.0.0.1");//ip
private IPEndPoint myserver; //ip+port
private Socket sock; //socket
private bool check = true;
private Socket accsock;
public delegate void deleg(string netmessage);//声明一个委托
public delegate void deleg2();//声明一个委托
public Form1()
{
InitializeComponent();
}
public void setText(string netmessage) //deleg委托触发的事件
{
richTextBox1.AppendText(netmessage + "/r/n");
}
public void setText2() { //deleg2委托触发的事件
textBox3.AppendText("ip:"+textBox1.Text+"port:"+textBox2.Text);
}
private void accp() { //线程调用的方法,包括接收、监听触发;
try
{
myserver = new IPEndPoint(myip, Int32.Parse(textBox2.Text));
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//socket定义
sock.Bind(myserver);//socket绑定服务器
sock.Listen(50);//最大连接数
button1.BeginInvoke(new deleg2(setText2));//监听按钮触发事件
while (true)
{
accsock = sock.Accept();
if (accsock.Connected)
{
//textBox3.AppendText("build connect ");
while (check) //从网络中接受数据
{
Byte[] rec = new Byte[64];
NetworkStream netstream = new NetworkStream(accsock);
netstream.Read(rec, 0, rec.Length);
string recmessage = System.Text.Encoding.BigEndianUnicode.GetString(rec);
Invoke(new deleg(setText), recmessage);
}
}
}
}
catch(Exception e){MessageBox.Show(e.Message);}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
myip = IPAddress.Parse(textBox1.Text);
}
catch { MessageBox.Show("ip error");}
try {
Thread thread = new Thread(new ThreadStart(accp));//开启线程
thread.Start();
}
catch(Exception ee){textBox3.AppendText(ee.Message);}
}
private void button2_Click(object sender, EventArgs e) //发送数据
{
try {
Byte[] sendbyte=new Byte[64];
string send = richTextBox2.Text + "/r/n";
NetworkStream netstream = new NetworkStream(accsock);
sendbyte = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
netstream.Write(sendbyte,0,sendbyte.Length);
}
catch { MessageBox.Show("not build connect"); }
}
private void button3_Click(object sender, EventArgs e)//停止连接
{
try { sock.Close();
textBox3.AppendText("stop");
}
catch { MessageBox.Show("invalid stop"); };
}
}
}
浙公网安备 33010602011771号