这是因为文件路径不对造成的,解决方法如下:
1、首先pro文件配置:Qt网络功能需要在pro文件增加网络库。
2、QTcpServer服务端建立的方法代码,如下图所示。
3、QTcpServer当有新客户端连接时,会发出QTcpServer::newConnection的信号方法代码。
4、客户端为主动连接方不需要监听,直接建立QTcpSocket代码。
5、最后通过connectToHost连接指定ip和端口,将socket的连接成功的信号与对应槽连接,当连接成功可以将自定义的标记位置为true。
搭建外网访问,首先你要有一台外网可访问的服务器,有以下几种方法可以实现。一、购买外网服务器。由于服务器端使用JAVA语言开发,所以外网服务器操作系统可以是Linux或Windows,这个需要你花钱购买。如果只是测试,你可以选择购买阿里云的云服务器,非常便宜。
二、还有一种方法就是你通过花生壳之类的软件进行映射你的网络,但花生壳对长城宽带之类的网络支持不是特别好,如果需要很好的支持,那也需要花钱购买。
三、如果你是通过路由器上网,并且可以操作路由器权限且使用的是电信或者是联通的网络,那可以直接在路由器里面做端口映射,这个你可以百度一下,有很多文章讲的非常清楚,这里篇幅限制,就不贴了。
四、如果你是直接通过猫上网且使用电信或联通宽带,那可以直接使用本机外网IP访问你的程序。
以上四种方法中,最稳定的还是购买外网服务器,其它都会有各种问题,你可以选择其中适合你的一种方法。希望能帮助到你
服务端:
ServerSocket serverSocket = new ServerSocket(2008)while (true) {
Socket socket = serverSocket.accept()
MyThread thread = new MyThread(socket)
thread.start()
} public class MyThread extends Thread {
private Socket socket
public MyThread(Socket socket) {
this.socket = socket
}
@Override
public void run() {
super.run()
try {
InputStream is = socket.getInputStream()
BufferedReader bufReader = new BufferedReader(new InputStreamReader(is))
String line = ""
String s = ""
while ((s = bufReader.readLine()) != null) {
line = line + s
}
System.out.println("接收到:" + line)
} catch (IOException e) {
e.printStackTrace()
}
}
}
客户端:
public static void main(String[] args) throws UnknownHostException, IOException {Socket socket=new Socket("192.168.0.101", 2008)
OutputStream out=socket.getOutputStream()
PrintWriter pw=new PrintWriter(new OutputStreamWriter(out))
pw.print("12345上山打老虎")
pw.flush()
pw.close()
out.close()
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)