我尝试从android连接到c# - 服务器。我的电脑ip地址是:“10.100.102.7”; 我测试了android客户端和服务器应用程序,它们运行良好,当我尝试从android连接到C#时,问题就开始了 - 服务器
C#:
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("10.100.102.7"), 6000);/
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(100);
Receiver = listener.Accept();
Java:
private Socket Sender_Socket;
private static final int SERVERPORT = 6000;
private static final String SERVER_IP = "10.100.102.7";
class Connect_To_Server implements Runnable
{
@Override
public void run()
{
try
{
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
Sender_Socket = new Socket(serverAddr, SERVERPORT);
}
catch (UnknownHostException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
在C#中 - 它在“Receiver = listener.Accept();”上停止 在java(android)中 - 它停在“Sender_Socket = new Socket(serverAddr,SERVERPORT);” 它应该是java socket函数中的问题 - 需要另一个函数来连接到C# - server。
答案 0 :(得分:1)
你需要实际发送一些东西,你在Java类中所做的一切都是检索InetAddress并打开一个套接字?
你需要实际做一些像发送数据包......
首先阅读:
http://developer.android.com/reference/java/net/Socket.html
然后逐步完成以下一些示例: http://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/
此外,您应该确保添加另一个(这次是通用的)错误捕获器,因为您处理的那些异常不是使用套接字/连接时可能发生的唯一两个。
答案 1 :(得分:0)
byte[] byData = System.Text.Encoding.ASCII.GetBytes("Connected");
listener.Send(byData);
waitForData(listener);
void waitForData(SocketState state)
{
try
{
state.Socket.BeginReceive(state.DataBuffer, 0, state.DataBuffer.Length, SocketFlags.None, new AsyncCallback(readDataCallback), state);
}
catch (SocketException se)
{
//Socket has been closed
//Close/dispose of socket
}
}
public void readDataCallback(IAsyncResult ar)
{
SocketState state = (SocketState)ar.AsyncState;
try
{
// Read data from the client socket.
int iRx = state.Socket.EndReceive(ar);
//Handle Data....
waitForData(state);
}
catch (ObjectDisposedException)
{
//Socket has been closed
//Close/dispose of socket
}
catch (SocketException se)
{
//Socket exception
//Close/dispose of socket
}
}
仅限C#
答案 2 :(得分:0)
我关闭了防火墙,现在他们可以连接;