连接问题:带有QTcpServer和Android客户端的TCP套接字
我正在尝试通过TCP协议建立套接字连接 <>但是我的服务器(用C++编写,在我的PC上运行)没有接收到我的客户端的连接请求(用java写的,在Android上运行) ServerSocket.h(在我的电脑中) ServerSocket.cpp(在我的电脑中) ClientSocket.java(Android版)连接问题:带有QTcpServer和Android客户端的TCP套接字,android,sockets,tcp,qtcpsocket,qtcpserver,Android,Sockets,Tcp,Qtcpsocket,Qtcpserver,我正在尝试通过TCP协议建立套接字连接 但是我的服务器(用C++编写,在我的PC上运行)没有接收到我的客户端的连接请求(用java写的,在Android上运行) ServerSocket.h(在我的电脑中) ServerSocket.cpp(在我的电脑中) ClientSocket.java(Android版) 你能帮我吗?“用C写的”???那不是C.服务器。。。未收到来自“我的客户端”的连接请求。好的,但是一开始是否建立了连接?客户机中发生了什么?它能连接吗?有什么错误?谢谢你的回答!我的意思
你能帮我吗?“用C写的”???那不是C.服务器。。。未收到来自“我的客户端”的连接请求。好的,但是一开始是否建立了连接?客户机中发生了什么?它能连接吗?有什么错误?谢谢你的回答!我的意思是C++。我没有收到任何错误(在客户端或服务器上)。在客户端
socket.isConnected()
返回true
。但是服务器没有挂起的连接为什么要关闭客户端(client->close();)?startRead()的第一次(也是每一次)调用可能没有(或没有足够的)可用字节
class ServerSocket: public QObject{
Q_OBJECT
public:
explicit ServerSocket(QObject *rpParent = 0);
void initServerSocket();
public slots:
void acceptConnection();
void startRead();
private:
QTcpServer* server;
QTcpSocket* client;
};
ServerSocket::SocketClient(QObject *rpParent) :
QObject(rpParent)
{
server = new QTcpServer(this);
client = new QTcpSocket(this);
}
void ServerSocket::initServerSocket(){
connect(server, SIGNAL(newConnection()), this, SLOT(acceptConnection()));
server->listen(QHostAddress::Any, 6005);
while(1){
if(server->hasPendingConnections() ){
printf("hasPendingConnections...\n");
}
}
}
void ServerSocket::acceptConnection(){
client = server->nextPendingConnection();
connect(client, SIGNAL(readyRead()), this, SLOT(startRead()));
}
void ServerSocket::startRead(){
char buffer[1024] = {0};
client->read(buffer, client->bytesAvailable());
printf("startRead %s\n", buffer);
client->close();
}
public class ClientSocket {
private Thread serverThread = null;
public ClientSocket(){
serverThread = new Thread(new ClientThread());
}
public void sendData(){
serverThread.start();
}
class ClientThread implements Runnable {
private PrintWriter printwriter;
public ClientThread() {
}
public void run() {
try {
Socket socket = new Socket("192.168.0.12", 6005);
if( socket.isConnected()){
Log.e("sendData", "connected!");
}
String msg = "Hey server!";
printwriter = new PrintWriter(socket.getOutputStream(), true);
printwriter.write(msg);
printwriter.flush();
printwriter.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}