发送数据时出错
本文关键字:出错 数据 | 更新日期: 2023-09-27 18:27:00
我开发了这段代码来发送数据,x&y在WP7屏幕中坐标到PC服务器,但它不工作,但调试器工作正常,我相信我的代码是正确的。显示时没有错误此代码用于WP7客户端
TransformGroup transformG;
TranslateTransform translation;
double DeltaX, DeltaY;
private Socket client_socket;
private delegate void mydelegate(byte[] buffer);
private delegate void ShowMessagedelegate(string MSG);
// Constructor
public MainPage()
{
InitializeComponent();
this.ManipulationDelta += new EventHandler<ManipulationDeltaEventArgs>(MainPage_ManipulationDelta);
transformG = new TransformGroup();
translation = new TranslateTransform();
transformG.Children.Add(translation);
}
void MainPage_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
DeltaX = e.DeltaManipulation.Translation.X;
DeltaY = e.DeltaManipulation.Translation.Y;
}
void StartSending()
{
try
{
SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString()+"/"+DeltaY.ToString());
socketEventArgs.SetBuffer(buffer, 0, buffer.Length);
client_socket.SendToAsync(socketEventArgs);
}
catch (Exception) { }
}
void Conncet(string IP_Address)
{
client_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs()
{
RemoteEndPoint = new IPEndPoint(IPAddress.Parse(IP_Address), 4532)
};
socketEventArg.Completed += OnConncetCompleted;
client_socket.ConnectAsync(socketEventArg);
}
private void ConnectBTN_Click(object sender, RoutedEventArgs e)
{
Conncet(IPAddress_TXT.Text);
Thread th = new Thread(new ThreadStart(StartSending));
}
以及服务器端的此代码
[DllImport("user32.dll")]
static extern bool GetCursorPos(ref Point lpPoint);
public Int32 pX, pY;
Socket SenderSocket;
void StartReceiving()
{
byte[] response = new byte[10000];
SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
socketEventArg.Completed += OnReceiveCompleted;
socketEventArg.SetBuffer(response, 0, response.Length);
SenderSocket.ReceiveAsync(socketEventArg);
}
void OnReceiveCompleted(object sender, SocketAsyncEventArgs e)
{
//this.Dispatcher.BeginInvoke(new mydelegate(ModifCursorPos), e.Buffer);
this.BeginInvoke(new mydelegate(ModifCursorPos), e.Buffer);
}
private void ModifCursorPos(byte[] buffer)
{
try
{
MemoryStream ms = new MemoryStream(buffer);
string chaine = Encoding.UTF8.GetString(buffer);
string[] pos = chaine.Split('/');
pX = Convert.ToInt32(pos[0]);
pY = Convert.ToInt32(pos[1]);
//posX.Text = pX.ToString();
//posY.Text = pY.ToString();
ms.Close();
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X + pX, Cursor.Position.Y + pY);
posX.Text = Cursor.Position.X.ToString();//try to get X in textbox
posY.Text = Cursor.Position.Y.ToString();//try to get Y in textbox
}
catch (Exception) { }
finally
{
StartReceiving();
}
}
我不知道它为什么不发送数据,或者可能没有收到数据plz帮助感谢
try
{
SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString()+"/"+DeltaY.ToString());
socketEventArgs.SetBuffer(buffer, 0, buffer.Length);
client_socket.SendToAsync(socketEventArgs);
}
catch (Exception) { }
如果你有异常,这会一直隐藏你的异常,所以试着把它改为
try
{
SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString()+"/"+DeltaY.ToString());
socketEventArgs.SetBuffer(buffer, 0, buffer.Length);
client_socket.SendToAsync(socketEventArgs);
}
catch (Exception e) { Console.Write(e.Tostring()); }
这将有助于找出问题的原因,然后如果您收到异常,请将其张贴在此处,我们可以帮助您获得更多
这个也是一样的尝试{MemoryStream ms=新的MemoryStream(缓冲区);string chaine=编码.UTF8.GetString(缓冲区);string[]pos=链。拆分('/');
pX = Convert.ToInt32(pos[0]);
pY = Convert.ToInt32(pos[1]);
//posX.Text = pX.ToString();
//posY.Text = pY.ToString();
ms.Close();
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X + pX, Cursor.Position.Y + pY);
posX.Text = Cursor.Position.X.ToString();//try to get X in textbox
posY.Text = Cursor.Position.Y.ToString();//try to get Y in textbox
}
catch (Exception) { }