Guest umarzaman Posted September 20, 2010 Report Posted September 20, 2010 <pre>hi i have developed a windows mobile based client app ........ i only want to send a simple string to the server running on pc via wifi connection...........i have already written the code and abt 2 months back it was working fine on emulator.....but recently when i try to execute the code i didnt work on emulator nor on the device on which i deployed it..............when i press the login button the application does nothing.......and in the output screen i get....."The thread 0xb69a647e has exited with code 0 (0x0).".............it dnt send any data to the server.....but when i run the exe of the code in debug folder it works fine and sends data to the server..... i am so confused that if exe is sending data why isnt the data sent through emulator or mbl device ....i am posting the code below...any help would be much appricieated..... using System; using System.Linq; 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; namespace DSDC { enum Command { Login, //Log into the server Logout, //Logout of the server Message, //Send a text message to all the chat clients List, //Get a list of users in the chat room from the server Null //No command } public partial class Form1 : Form { public Socket clientSocket; public EndPoint epServer; public string strName; int portnum = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void LOGIN_Click(object sender, EventArgs e) { strName = textBox1.Text; portnum =Convert.ToInt32(textBox3.Text); try { //Using UDP sockets clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //IP address of the server machine IPAddress ipAddress = IPAddress.Parse(textBox2.Text); //Server is listening on port 1000 IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, portnum); epServer = (EndPoint)ipEndPoint; Data msgToSend = new Data(); msgToSend.cmdCommand = Command.Login; msgToSend.strMessage = null; msgToSend.strName = strName; byte[] byteData = msgToSend.ToByte(); //Login to the server clientSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, epServer, new AsyncCallback(OnSend), null); } catch (Exception ex) { MessageBox.Show(ex.Message, "SGSclient"); } }//end of login button private void OnSend(IAsyncResult ar) { try { } catch (Exception ex) { MessageBox.Show(ex.Message, "SGSclient"); } }//end of on send } class Data { //Default constructor public Data() { this.cmdCommand = Command.Null; this.strMessage = null; this.strName = null; } //Converts the bytes into an object of type Data public Data(byte[] data) { //The first four bytes are for the Command this.cmdCommand = (Command)BitConverter.ToInt32(data, 0); //The next four store the length of the name int nameLen = BitConverter.ToInt32(data, 4); //The next four store the length of the message int msgLen = BitConverter.ToInt32(data, 8); //This check makes sure that strName has been passed in the array of bytes if (nameLen > 0) this.strName = Encoding.UTF8.GetString(data, 12, nameLen); else this.strName = null; //This checks for a null message field if (msgLen > 0) this.strMessage = Encoding.UTF8.GetString(data, 12 + nameLen, msgLen); else this.strMessage = null; } //Converts the Data structure into an array of bytes public byte[] ToByte() { List<byte> result = new List<byte>(); //First four are for the Command result.AddRange(BitConverter.GetBytes((int)cmdCommand)); //Add the length of the name if (strName != null) result.AddRange(BitConverter.GetBytes(strName.Length)); else result.AddRange(BitConverter.GetBytes(0)); //Length of the message if (strMessage != null) result.AddRange(BitConverter.GetBytes(strMessage.Length)); else result.AddRange(BitConverter.GetBytes(0)); //Add the name if (strName != null) result.AddRange(Encoding.UTF8.GetBytes(strName)); //And, lastly we add the message text to our array of bytes if (strMessage != null) result.AddRange(Encoding.UTF8.GetBytes(strMessage)); return result.ToArray(); } public string strName; //Name by which the client logs into the room public string strMessage; //Message text public Command cmdCommand; //Command type (login, logout, send message, etcetera) } }</pre>
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now