这是我第一次在任何编程语言中使用套接字(我对这个主题一点都不熟悉),我很难理解如何从不同的代码位置发送数据。
我想把数据从一个socket类发送到另一个serverplace,而不是socket类。我该怎么做?
这是我的代码:
服务器JAVA
package socket;
import database.models.PersoanaEntity;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static final int PORT = 27015;
public void start() {
new Thread(() -> {
try {
ServerSocket serverSocket = new ServerSocket(PORT);
Socket clientSocket = null;
PersoanaEntity loggedInPerson = new PersoanaEntity();
boolean isClose = false;
System.out.println("Server is running");
while (!isClose) {
clientSocket = serverSocket.accept();
new Thread(new ServerThread(clientSocket)).start();
}
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
服务器线程。JAVA
package socket;
import org.json.JSONObject;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class ServerThread extends Thread{
private Socket socket = null;
private ObjectInputStream in = null;
private ObjectOutputStream out = null;
public ServerThread(Socket socket) {
this.socket = socket;
try {
//For receiving and sending data
this.in = new ObjectInputStream(socket.getInputStream());
this.out = new ObjectOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
try {
String recievedData = this.in.readObject().toString();
JSONObject jsonObject = new JSONObject(recievedData);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private void sendMessage(String message) {
try {
this.out.writeObject(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
假设我想从项目中的其他类调用sendMessage。有办法吗?
谢谢
保留对ServerThread
对象的引用,并将sendMessage
的可见性更改为public
。然后可以从任何地方调用它。
旁白:因为ServerThread扩展了Thread
,所以您不需要将其包装成一个新的Thread
,比如这个new Thread(new ServerThread(clientSocket))
。
问题内容: 我有2个java netbeans项目,一个是Server,另一个是Client。我已经创建了一个Message类,该类要传递给服务器,并在服务器上进行修改后以另一种方式返回给客户端。我在两个项目中都包含了Message类。我使用和传递对象。服务器和客户端之间的连接正常,并且对象通过,但在服务器上,当我从using 方法读取对象时,将其类型转换为类。但是在服务器上抛出 ClassNot
我有一个数组类型的。我必须在python中通过流/TCP套接字发送它。然后我必须在接收端接收相同的阵列。
问题内容: 我如何使用getOutputStream方法发送一个strin。正如他们提到的,它只能发送字节。到目前为止,我可以发送一个字节。但不是字符串值。 提前致谢 问题答案: 如何使用PrintWriter: 编辑 :找到了我自己的答案,看到讨论了一个改进,但未列出。这是使用OutputStreamWriter编写字符串的更好方法:
问题内容: 我真的很困惑如何通过套接字发送图像数据类型。请帮我。我已经搜寻了如何将Image数据类型转换为char [],但结果为0。 问题答案: 您可以使用以下方法将其转换为(source): 然后,您可以使用ImageIO.write()方法写入结果。
问题内容: 我正在尝试用Python编写一个实现套接字的程序,每个客户端发送一个PDF文件,服务器接收该文件,标题更改为“ file_number.pdf”(即:file_1.pdf)。出现的问题是只有客户端才能成功发送文件。当第二个客户端尝试发送程序时,它确实崩溃了。我在做什么错,我该如何解决我的代码以允许N个客户端(N <20)连接到服务器并传输文件? 这是服务器代码: 这是客户端代码: 为了
问题内容: 我有工作的服务器和客户端应用程序,它们在发送小文件时可以完美工作,但是当我尝试通过套接字发送例如700mb的电影文件时,它给了我 我在互联网上搜索并找到了一些有关发送大文件的教程,但并不太了解它们,但是我认为我的麻烦在于编写文件。 这是服务器用来写入我的文件的代码: 这是我的客户用来发送文件的代码: 问题答案: 它之所以给您,是因为您试图在发送之前将整个文件读入内存。这完全是100%完