服务器端代码
控件:btnStart_Click,btnSend_Click,label4,textBox1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Threading;
using System.Net.Sockets;
using System.Net;
namespace MobileServer
{
public partial class FrmEasy : Form
{
//变量
private ThreadStart start;
private Thread listenThread,client_th;
static private bool m_bListening = false;
//static private System.Net.IPAddress MyIP = System.Net.IPAddress.Parse("192.168.1.3");
//获得当前服务端的IP 地址
static private System.Net.IPAddress MyIP = Dns.Resolve(Dns.GetHostName()).AddressList[0];
static private TcpListener listener = new TcpListener(MyIP, 5567);
private String msg;
ArrayList clientArray = new ArrayList();
public FrmEasy()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
start = new ThreadStart(startListen);
listenThread = new Thread(start);
}
private void btnStart_Click(object sender, EventArgs e)
{
if (m_bListening)
{
m_bListening = false;
label4.Text = "Server Idle...";
}
else
{
m_bListening = true;
listenThread.Start();
label4.Text = "Server Listening...";
}
}
private void btnSend_Click(object sender, EventArgs e)
{
object a = clientArray[0];
TcpClient client = (TcpClient)clientArray[0];
if (client == null)
return;
NetworkStream sendStream = client.GetStream();
String msg = textBox1.Text;
Byte[] sendBytes = Encoding.Default.GetBytes(msg);
sendStream.Write(sendBytes, 0, sendBytes.Length);
sendStream.Flush();
//sendStream.Close();
}
private void showmore()
{
textBox1.Text = msg;
}
private void startListen()
{
//textBox1.Text = "listening...";
listener.Start();
//接收数据
while (m_bListening)
{
//测试是否有数据
try
{
TcpClient client = listener.AcceptTcpClient();
clientArray.Add(client);
ParameterizedThreadStart threadStart = new ParameterizedThreadStart(AcceptMsg);
client_th = new Thread(threadStart);
client_th.Start(client);
}
catch (Exception re)
{
MessageBox.Show(re.Message);
}
}
listener.Stop();
}
private void AcceptMsg(object arg)
{
TcpClient client = (TcpClient)arg;
NetworkStream ns = client.GetStream();
//StreamReader sr = new StreamReader(ns);//流读写器
//字组处理
while (true)
{
try
{
byte[] bytes = new byte[1024];
int bytesread = ns.Read(bytes, 0, bytes.Length);
msg = Encoding.Default.GetString(bytes, 0, bytesread);
//显示
//MessageBox.Show(msg);
showmore();
//将收到的数据回传给客户端,实际中,应该经过解析,将相应的数据回传给客户端。
NetworkStream sendStream = client.GetStream();
String msga = textBox1.Text;
Byte[] sendBytes = Encoding.Default.GetBytes(msga);
sendStream.Write(sendBytes, 0, sendBytes.Length);
sendStream.Flush();
ns.Flush();
//ns.Close();
}
catch(Exception ex)
{
//MessageBox.Show("与客户端断开连接了");
MessageBox.Show(ex.Message);
break;
}
}
}
}
}
客户端代码:
控件:button1_Click,btnSend_Click,textBox2
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.Sockets;
using System.Threading;
namespace TCP_PPCClient
{
public partial class Form3 : Form
{
private TcpClient client;
private Thread client_th;
public Form3()
{
InitializeComponent();
//此句在WinForm中可以,但在智能设备上不可用
//Control.CheckForIllegalCrossThreadCalls = false;
}
private void btnSend_Click(object sender, EventArgs e)
{
if (client == null)
return;
NetworkStream sendStream = client.GetStream();
String msg = textBox1.Text;
Byte[] sendBytes = Encoding.Default.GetBytes(msg);
sendStream.Write(sendBytes, 0, sendBytes.Length);
sendStream.Flush();
//sendStream.Close();
textBox1.Text = "Msg Sent!";
}
private void button1_Click(object sender, EventArgs e)
{
String mystr = textBox1.Text;
string ip = "192.168.1.3"; //连接服务器端的IP地址
this.connect_s(ip);
}
public void connect_s(string ip)
{
try
{
client = new TcpClient(ip, 5567);
ThreadStart threadStart = new ThreadStart(AcceptMsg);
client_th = new Thread(threadStart);
client_th.Start();
textBox2.Text="连接成功";
}
catch(System.Exception e)
{
textBox2.Text = e.ToString(); ;
}
}
private void AcceptMsg()
{
NetworkStream ns = client.GetStream();
//StreamReader sr = new StreamReader(ns);//流读写器
//字组处理
while (true)
{
try
{
byte[] bytes = new byte[1024];
int bytesread = ns.Read(bytes, 0, bytes.Length);
string msg = Encoding.Default.GetString(bytes, 0, bytesread);
//显示
MessageBox.Show(msg);
ns.Flush();//刷新流中的数据
//ns.Close();
}
catch(Exception ex)
{
//MessageBox.Show ("与服务器断开连接了");
MessageBox.Show(ex.Message);
break;
}
}
}
}
}