Титла: QTcpSocket замръзва на connecting
Публикувано от: shoshon в Jan 10, 2010, 22:44
Ето кода на програмата. Проблема е че tcp сокета си седи на connecting. Не ми се сърдете че не съм го направил със сигнали- мързешеме, а и съм сигурен какъв ще е резултата. Къде е проблема GeSHi (Java): import java.awt.Button; import java.awt.FlowLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.io.ObjectOutputStream; import java.net.Socket; import javax.swing.JFrame; import com.trolltech.qt.core.QDataStream; import com.trolltech.qt.core.QIODevice; import com.trolltech.qt.core.QIODevice.OpenModeFlag; import com.trolltech.qt.network.QAbstractSocket; import com.trolltech.qt.network.QHostAddress; import com.trolltech.qt.network.QTcpSocket; import com.trolltech.qt.network.QHostAddress.SpecialAddress; public class GiglesMain extends JFrame{ QTcpSocket socket; public GiglesMain(){ initGUI(); } protected void initGUI(){ } // public void windowClosed(WindowEvent e){ // System.exit(0); // } }); System. out. println("/----- Data Send----/"); QDataStream stream = new QDataStream(socket); stream. writeInt(Integer. valueOf(ctrwField. getText())); System. out. println("State: "+socket. state()+" Data sent : "+Integer. valueOf(ctrwField. getText())+" Data to write:"+socket. bytesToWrite()); } public void displayError(QAbstractSocket.SocketError error){ System. out. println("Socket error: "+error ); } public void bytesWritten(){ System. out. println("bytes are written"); } }); // TODO Auto-generated method stub System. out. println("Socket status: "+socket. state()+" Error String:"+socket. errorString()); } }); System. out. println("/------Defined socket--------/"); socket = new QTcpSocket(); System. out. println("Tryint to connect socket"); socket.connectToHost(new QHostAddress(SpecialAddress.LocalHost),9999, OpenModeFlag.WriteOnly); System. out. println(socket. state()); } }); this.add(ctrwField); this.add(connectButton); this.add(sendButton); this.add(statusButton); this.setSize(300, 200); this.setVisible(true); } public static void main (String[] args ){ GiglesMain app = new GiglesMain(); } }
Малко dump: ------Defined socket--------/ Tryint to connect socket ConnectingState /----- Data Send----/ State: ConnectingState Data sent : 5 Data to write:4 /----- Data Send----/ State: ConnectingState Data sent : 5 Data to write:8 /----- Data Send----/ State: ConnectingState Data sent : 5 Data to write:12 /----- Data Send----/ State: ConnectingState Data sent : 5 Data to write:16
Много ви благодаря за помощта
Титла: Re: QTcpSocket замръзва на connecting
Публикувано от: nifelheim в Jan 11, 2010, 00:45
Не разбирам нищо от джава, но опитай дали така ще има някаква промяна: socket.connectToHost("localhost", 9999);
Титла: Re: QTcpSocket замръзва на connecting
Публикувано от: ръца-пръца в Jan 11, 2010, 01:17
Аз пък от QT нищо не разбирам ;) Ама ако мога да си позволя един тъп въпрос, сигурен ли си, че на порт 9999 някой те слуша? ;)
Титла: Re: QTcpSocket замръзва на connecting
Публикувано от: spec1 в Jan 11, 2010, 09:45
А защо не използваш стандартният клас Socket ? new Socket(... съотв. конструктор ...
Титла: Re: QTcpSocket замръзва на connecting
Публикувано от: shoshon в Jan 12, 2010, 13:00
Проблема се реши: В main метода птрябва първо да се инициализира QApplication.init(args) и да има app.run(). Иначе курец....
|