سلام من این کد رو برای اتصال موبایل به کامپوتر با استفاده از شبکه وای فای انجام دادم با اینکه با ماشین مجازی کارکرد اما روی گوشیم در مرحله connecting می ماند به نظر شما مشکل کجا است
public class MainActivity extends Activity {
EditText editText ;
Button send ;
public static TextView txt;
/////
private String serverMessage;
public static final String SERVERIP = "192.168.1.100";
public static final int SERVERPORT = 4444;
private OnMessageReceived mMessageListener = null;
private boolean mRun = false;
PrintWriter out;
BufferedReader in;
DataOutputStream dataOutputStream = null;
Thread t;
Runnable con=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mRun = true;
try {
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
Log.e("TCP Client", "C: Connecting...");
MainActivity.txt.setText("C: Connecting..."+serverAddr);
//Socket socket = new Socket("192.168.1.1", SERVERPORT);
Socket socket = new Socket(serverAddr, SERVERPORT);
/// //os = socket.getOutputStream();
if(socket.isBound())
{
Log.i("SOCKET", "Socket: Connected");
MainActivity.txt.setText("C: Connected...");
}
else
{
Log.e("SOCKET", "Socket: Not Connected");
MainActivity.txt.setText("C:Not Connected");
}
try
{
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
/* dataOutputStream = new DataOutputStream(socket.getOutputStream()); byte[] bytes = new byte[] {1}; dataOutputStream.write(bytes, 0, bytes.length); */
Log.e("TCP Client", "C: Sent.");
MainActivity.txt.setText("C:Sent");
Log.e("TCP Client", "C: Done.");
MainActivity.txt.setText("C: Done");
if(out.checkError()) { Log.e("PrintWriter", "CheckError"); }
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (mRun)
{ serverMessage = in.readLine();
if (serverMessage != null && mMessageListener != null) {
mMessageListener.messageReceived(serverMessage); } serverMessage = null; }
Log.e("RESPONSE FROM SERVER", "S: Received Message: '" + serverMessage + "'"); }
catch (Exception e)
{
Log.e("TCP", "S: Error", e);
MainActivity.txt.setText(e.toString());
}
finally { socket.close(); }
}
catch (Exception e) {
Log.e("TCP", "C: Error", e);
MainActivity.txt.setText("C:"+e);
}
}
};
/////
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("start", "execute");
editText = (EditText)findViewById(R.id.editText1);
send = (Button)findViewById(R.id.button1);
txt=(TextView)findViewById(R.id.textView1);
// connect to the server
// Looper.prepare();
///////
t=new Thread(con);
t.start();
////////
// new connectTask().execute("");
//Log.d("excute", "execute");
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String message = editText.getText().toString();
if (out != null && !out.checkError())
{
out.print(message);
out.flush();
}
//sends the message to the server
//if (mTcpClient != null)
// {
// mTcpClient.sendMessage(message); }
editText.setText("");
}
});
}
کدی که روی کامپوتر نوشتم نیز این است
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
//using System.Drawing;
using System.Linq;
using System.Text;
//using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO;
namespace ConsoleApplication5
{
class Program
{
static Socket listeningSocket;
static Socket socket;
static Thread thrReadRequest;
static int iPort = 4444;
static int iConnectionQueue = 100;
static private void getRequest()
{
int i = 0;
while (true)
{
i++;
Console.WriteLine("Outside Try i = {0}", i.ToString());
try
{
// socket = listeningSocket.Accept();
socket = listeningSocket.Accept();
byte[] a = new byte[1024];
string text_rec = "";
while (text_rec != "exit")
{
socket.Receive(a);
text_rec = Encoding.Default.GetString(a);
if(text_rec!="")
Console.WriteLine(text_rec);
}
//using reader }//using ns
// Receiving //byte[] rcvLenBytes = new byte[4];
//socket.Receive(rcvLenBytes);
//int rcvLen = System.BitConverter.ToInt32(rcvLenBytes, 0);
//byte[] rcvBytes = new byte[rcvLen];
//socket.Receive(rcvBytes);
//String formattedBuffer = System.Text.Encoding.ASCII.GetString(rcvBytes);
//byte[] buffer = new byte[socket.SendBufferSize];
//int iBufferLength = socket.Receive(buffer, 0, buffer.Length, 0);
//Console.WriteLine("Received {0}", iBufferLength);
//Array.Resize(ref buffer, iBufferLength);
//string formattedBuffer = Encoding.ASCII.GetString(buffer);
//Console.WriteLine("Data received by Client: {0}", formattedBuffer);
// socket = listeningSocket.Accept();
// using (NetworkStream nt = new NetworkStream(socket))
// {
// using (StreamReader reader = new StreamReader(nt))
// {
// string line;
// // string line;
// // while ((line = reader.ReadLine()) != null)
// //as networkstream never got eof. was using it as replacement while(true)
// // {
// while (true)
// {
// try
// {
// line = reader.ReadLine();
// if (line == "quit")
// {
// socket.Close();
// listeningSocket.Close();
// Environment.Exit(0);
// }
// Console.WriteLine("Inside Try i = {0}", i.ToString());
// Thread.Sleep(500);
// }
// catch (IOException)
// {
// break;
// }
// Console.WriteLine(line);
// }
// }
// //using reader
// }
// //using ns
}
catch (Exception e)
{
//socket.Close();
Console.WriteLine("Receiving error: " + e.ToString()); Console.ReadKey();
//throw;
}
finally
{
socket.Close();
//listeningsocket.close();
}
}
}
static private string getLocalIPAddress()
{
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
break;
}
}
return localIP;
}
static void Main(string[] args)
{
Console.WriteLine(IPAddress.Parse(getLocalIPAddres s()).ToString());
try
{
listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listeningSocket.Bind(new IPEndPoint(0, iPort));
// listeningSocket.Bind(new IPEndPoint(IPAddress.Parse(getLocalIPAddress()), iPort));
listeningSocket.Listen(iConnectionQueue);
thrReadRequest = new Thread(new ThreadStart(getRequest));
thrReadRequest.Start();
}
catch (Exception e)
{
Console.WriteLine("Winsock error: " + e.ToString()); //throw;
}
}
}
}