各位,求助了,我监听本机一个端口,把这个端口接收到的数据发送到另外的计算机的指定端口上,现在有时可以接收到,有时要出问题,
//回发数据给客户端
private void RecieveCallBack(IAsyncResult ar)
这个是接收完毕的函数,函数实现可能有问题,麻烦各位给看下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Sockets;
using System.Threading;
using System.Net;namespace 网络通信服务端接收
{
public partial class Form1 : Form
{
//变量
private ThreadStart start;
private Thread listenThread;
static private bool m_bListening = false;
static private System.Net.IPAddress MyIP = System.Net.IPAddress.Parse("192.168.222.98");
static private TcpListener listener = new TcpListener(MyIP, 50010);
private String msg;
private Socket[] clientSocket;
private int clientNum;
private Socket socket;
private IPEndPoint serverInfo; byte[] buffer = new byte[1024];
//初始化监听器 public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
start = new ThreadStart(startListen);
listenThread = new Thread(start);
} //服务器线程处理
private void startListen()
{ //Socket socket = listener.AcceptSocket();
while (true)
{
clientSocket[clientNum] = socket.Accept();
clientSocket[clientNum].BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(RecieveCallBack), clientSocket[clientNum]);
tbNews.AppendText(clientSocket[clientNum].RemoteEndPoint.ToString() + "成功连接服务器\r\n");
}
} private void btn_startServer_Click(object sender, EventArgs e)
{
m_bListening = true;
clientNum = 0;
clientSocket = new Socket[65535]; serverInfo = new IPEndPoint(IPAddress.Parse("192.168.222.98"), Int32.Parse("50010"));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(serverInfo);
socket.Listen(50); listenThread.Start();
tbNews.AppendText("开始监听...\r\n");
btn_startServer.Enabled = false;
btn_closeServer.Enabled = true; } private void btn_closeServer_Click(object sender, EventArgs e)
{
m_bListening = false;
tbNews.AppendText("停止监听...\r\n");
btn_startServer.Enabled = true;
btn_closeServer.Enabled = false;
}
//回发数据给客户端
private void RecieveCallBack(IAsyncResult ar)
{
Socket s = (Socket)ar.AsyncState;
int read = s.EndReceive(ar); if (read > 0)
{
string strContent = Encoding.ASCII.GetString(buffer, 0, read);
//sendMsg(strContent);
tbNews.AppendText("接收到" + strContent.Length + "字节,内容:\r\n-----" + strContent + "\r\n");
} } public void sendMsg(string msg)
{
try
{
TcpClient client = new TcpClient("192.168.222.98", 5003);
NetworkStream sendStream = client.GetStream();
//StreamWriter writer = new StreamWriter(sendStream);
Byte[] sendBytes = Encoding.Default.GetBytes(msg);
sendStream.Write(sendBytes, 0, sendBytes.Length);
//writer.Flush();
sendStream.Close();
client.Close();
//textBox1.Text = "Msg Sent!"; }
catch (System.Exception e)
{
tbNews.AppendText("" +e.Message + "\r\n"); }
} }
}
//回发数据给客户端
private void RecieveCallBack(IAsyncResult ar)
这个是接收完毕的函数,函数实现可能有问题,麻烦各位给看下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Sockets;
using System.Threading;
using System.Net;namespace 网络通信服务端接收
{
public partial class Form1 : Form
{
//变量
private ThreadStart start;
private Thread listenThread;
static private bool m_bListening = false;
static private System.Net.IPAddress MyIP = System.Net.IPAddress.Parse("192.168.222.98");
static private TcpListener listener = new TcpListener(MyIP, 50010);
private String msg;
private Socket[] clientSocket;
private int clientNum;
private Socket socket;
private IPEndPoint serverInfo; byte[] buffer = new byte[1024];
//初始化监听器 public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
start = new ThreadStart(startListen);
listenThread = new Thread(start);
} //服务器线程处理
private void startListen()
{ //Socket socket = listener.AcceptSocket();
while (true)
{
clientSocket[clientNum] = socket.Accept();
clientSocket[clientNum].BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(RecieveCallBack), clientSocket[clientNum]);
tbNews.AppendText(clientSocket[clientNum].RemoteEndPoint.ToString() + "成功连接服务器\r\n");
}
} private void btn_startServer_Click(object sender, EventArgs e)
{
m_bListening = true;
clientNum = 0;
clientSocket = new Socket[65535]; serverInfo = new IPEndPoint(IPAddress.Parse("192.168.222.98"), Int32.Parse("50010"));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(serverInfo);
socket.Listen(50); listenThread.Start();
tbNews.AppendText("开始监听...\r\n");
btn_startServer.Enabled = false;
btn_closeServer.Enabled = true; } private void btn_closeServer_Click(object sender, EventArgs e)
{
m_bListening = false;
tbNews.AppendText("停止监听...\r\n");
btn_startServer.Enabled = true;
btn_closeServer.Enabled = false;
}
//回发数据给客户端
private void RecieveCallBack(IAsyncResult ar)
{
Socket s = (Socket)ar.AsyncState;
int read = s.EndReceive(ar); if (read > 0)
{
string strContent = Encoding.ASCII.GetString(buffer, 0, read);
//sendMsg(strContent);
tbNews.AppendText("接收到" + strContent.Length + "字节,内容:\r\n-----" + strContent + "\r\n");
} } public void sendMsg(string msg)
{
try
{
TcpClient client = new TcpClient("192.168.222.98", 5003);
NetworkStream sendStream = client.GetStream();
//StreamWriter writer = new StreamWriter(sendStream);
Byte[] sendBytes = Encoding.Default.GetBytes(msg);
sendStream.Write(sendBytes, 0, sendBytes.Length);
//writer.Flush();
sendStream.Close();
client.Close();
//textBox1.Text = "Msg Sent!"; }
catch (System.Exception e)
{
tbNews.AppendText("" +e.Message + "\r\n"); }
} }
}
//回发数据给客户端
private void RecieveCallBack(IAsyncResult ar)
{
Socket s = (Socket)ar.AsyncState;
int read = s.EndReceive(ar); if (read > 0)
{
string strContent = Encoding.ASCII.GetString(buffer, 0, read);
//sendMsg(strContent);
tbNews.AppendText("接收到" + strContent.Length + "字节,内容:\r\n-----" + strContent + "\r\n");
} }