作为服务器端测试程序,已经接收到客户端发来的数据,接收到数据之后需要向客户端做一个握手应答也就是发个确认过去,
刚测试了下,客户端的程序没显示应答内容,不知道错在哪里了,请帮忙,谢谢!
public static string message = "ABC&";
public static string response = "";
private bool isListening = false;
private Socket socket;
private string text;
private string _text = "";
private string msg = ""; private void Listen()
{ IPAddress localAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];
Int32 port = 11000;
TcpListener tcpListener = new TcpListener(localAddr, port);
//开始侦听
tcpListener.Start();
try
{ //返回可以用以处理连接的Socket实例 Socket socketForClient = tcpListener.AcceptSocket(); //如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
if (socketForClient.Connected)
{ while (true)
{
//创建networkStream对象通过网络套节字来接受和发送数据
NetworkStream ns = new NetworkStream(socketForClient); //从当前数据流中读取一行字符,返回值是字符串
StreamReader sr = new StreamReader(ns);
msg = sr.ReadLine();
sr.Close();
/*向客户端回发数据开始*/ //将响应信息以字节的方式发送到客户端 握手应答,也就是发个确认,起始字节0x7E也就是符号~,消息标识0x80也就是符号€,消息体长度4bytes。
//string _back = "7E80";
//socketForClient.Send(Encoding.UTF8.GetBytes(Convert.ToByte(_back, 16))); string _back = "~€";
socketForClient.Send(Encoding.UTF8.GetBytes(_back));
/*向客户端回发数据结束*/
}
} socketForClient.Shutdown(SocketShutdown.Both);/*关闭连接*/
socketForClient.Close();//释放资源 }
catch (Exception ey)
{
MessageBox.Show(ey.ToString());
}
finally
{
tcpListener.Stop(); }
}
刚测试了下,客户端的程序没显示应答内容,不知道错在哪里了,请帮忙,谢谢!
public static string message = "ABC&";
public static string response = "";
private bool isListening = false;
private Socket socket;
private string text;
private string _text = "";
private string msg = ""; private void Listen()
{ IPAddress localAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];
Int32 port = 11000;
TcpListener tcpListener = new TcpListener(localAddr, port);
//开始侦听
tcpListener.Start();
try
{ //返回可以用以处理连接的Socket实例 Socket socketForClient = tcpListener.AcceptSocket(); //如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
if (socketForClient.Connected)
{ while (true)
{
//创建networkStream对象通过网络套节字来接受和发送数据
NetworkStream ns = new NetworkStream(socketForClient); //从当前数据流中读取一行字符,返回值是字符串
StreamReader sr = new StreamReader(ns);
msg = sr.ReadLine();
sr.Close();
/*向客户端回发数据开始*/ //将响应信息以字节的方式发送到客户端 握手应答,也就是发个确认,起始字节0x7E也就是符号~,消息标识0x80也就是符号€,消息体长度4bytes。
//string _back = "7E80";
//socketForClient.Send(Encoding.UTF8.GetBytes(Convert.ToByte(_back, 16))); string _back = "~€";
socketForClient.Send(Encoding.UTF8.GetBytes(_back));
/*向客户端回发数据结束*/
}
} socketForClient.Shutdown(SocketShutdown.Both);/*关闭连接*/
socketForClient.Close();//释放资源 }
catch (Exception ey)
{
MessageBox.Show(ey.ToString());
}
finally
{
tcpListener.Stop(); }
}
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.IO;
using System.Threading;
using System.Net; namespace SocketFive
{
public partial class SocketFive : Form
{
public SocketFive()
{
InitializeComponent();
}
public static string message = "ABC&";
public static string response = "";
private bool isListening = false;
private Socket socket;
private string text;
private string _text = "";
private string msg = "";
private void Listen()
{
//IPAddress localAddr = IPAddress.Parse("192.168.0.205");
IPAddress localAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];
Int32 port = 11000;
TcpListener tcpListener = new TcpListener(localAddr, port);
//开始侦听
tcpListener.Start();
//返回可以用以处理连接的Socket实例
//Socket socketForClient = tcpListener.AcceptSocket();
try
{
Socket socketForClient = tcpListener.AcceptSocket(); //如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
if (socketForClient.Connected)
{ while (true)
{
//创建networkStream对象通过网络套节字来接受和发送数据
NetworkStream ns = new NetworkStream(socketForClient); //从当前数据流中读取一行字符,返回值是字符串
StreamReader sr = new StreamReader(ns);
msg = sr.ReadLine();
sr.Close(); //message += msg+"&";
//MessageBox.Show(message);
//MessageBox.Show(msg); /*解析数据开始*/
byte[] buffer = new byte[1024];
if (msg != "")
{
for (int i = 0; i < msg.ToCharArray().Length; i++)
{
char[] _data = msg.ToCharArray();
buffer[i] = (byte)_data[i];
_text += buffer[i].ToString("X2") + "_join_";
} //MessageBox.Show(_text); } MessageBox.Show(_text); msg = "";
_text = ""; /*解析数据结束*/
/*向客户端回发数据开始*/ //将响应信息以字节的方式发送到客户端 握手应答,也就是发个确认,起始字节0x7E也就是符号~,消息标识0x80也就是符号€,消息体长度4bytes。
//string _back = "7E80";
//socketForClient.Send(Encoding.UTF8.GetBytes(Convert.ToByte(_back, 16))); string _back = "~€";
socketForClient.Send(Encoding.UTF8.GetBytes(_back));
/*向客户端回发数据结束*/
}
//MessageBox.Show(message); } socketForClient.Shutdown(SocketShutdown.Both);/*关闭连接*/
socketForClient.Close();//释放资源 }
catch (Exception ey)
{
MessageBox.Show(ey.ToString());
}
finally
{
tcpListener.Stop(); }
} private void btnStart_Click(object sender, EventArgs e)
{ isListening = true;
Thread _thread = new Thread(new ThreadStart(Listen));
_thread.Start();
}
}
}