我有套接字服务器(java桌面应用程序)正在等待从java webapp(套接字客户端)连接。通信看起来还可以,我在客户端看到来自服务器的消息,但是当我发送消息时,我在服务器端没有收到任何消息。会有什么问题呢?当我检查服务器与telnet,一切正常。下面是我的代码:
服务器:
public class ThumbnailGenerator {
static Logger log = Logger.getLogger("ThumbnailGenerator");
public static List<ThumbnailTask> taskqueue = new ArrayList<ThumbnailTask>();
public static void main(String[] args) throws IOException {
ThumbnailTask urlobject = new ThumbnailTask();
urlobject.setUrl("http://www.google.com");
urlobject.setOutputfile("newFile");
urlobject.setStatus(0);
taskqueue.add(urlobject);
MyThread mt = new MyThread();
mt.start();
startServer();
}
public static void startServer() {
final int portNumber = 2000;
log.info("Creating server socket on port " + portNumber);
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(portNumber);
log.info("Server waiting for clients!");
while (true) {
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
pw.println("Give URL address!");
pw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str = br.readLine();
log.info("Message received from client is " + str);
String[] ar = str.split(",");
ThumbnailTask urlobject = new ThumbnailTask();
urlobject.setUrl(ar[0]);
urlobject.setOutputfile(ar[1]);
urlobject.setStatus(0);
synchronized (taskqueue) {
taskqueue.add(urlobject);
}
pw.println("Starting making thumbnail of " + ar[0]);
pw.close();
socket.close();
log.info("Thumbnail of: " + ar[0] + " will be created");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class MyThread extends Thread {
static Logger log = Logger.getLogger("MyThread");
boolean running = true;
public void run() {
log.debug("ENTRY THREAD");
while (running) {
if (!ThumbnailGenerator.taskqueue.isEmpty()) {
Iterator<ThumbnailTask> thumbnailiterator = ThumbnailGenerator.taskqueue.iterator();
int count = 0;
while (thumbnailiterator.hasNext()) {
ThumbnailTask task = thumbnailiterator.next();
boolean thumbnailresult = false;
if (task.getStatus() == 0) {
thumbnailresult = ThumbnailGenerator.makeThumbnail(task.getUrl(), task.getOutputfile());
if (thumbnailresult = true) {
task.setStatus(1);
//ThumbnailGenerator.taskqueue.set(count, task);
log.info("RESULT = true");
}
}
count++;
}
} else {
running = false;
}
try {
MyThread.sleep(10000);
} catch (InterruptedException e) {
running = false;
e.printStackTrace();
}
}
log.debug("EXIT");
}
客户:
public static void startSender(String url) {
final String host = "localhost";
final int portNumber = 2000;
log.info("Creating socket to '" + host + "' on port " + portNumber);
try {
while (true) {
Socket socket = new Socket(host, portNumber);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
log.info("Server says:" + br.readLine());
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
String sendMessage = url;
bw.write(sendMessage);
bw.flush();
log.info("Message sent to the server : " + sendMessage);
log.info("Server says:" + br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
谢谢帮忙!
你在读台词,但不是在写台词。在消息中添加行终止符,或使用println()
我对Android系统是新手。我有一个客户端类,我的主要活动引用。client类将客户端套接字连接到充当服务器的外部设备,但是它从不将我试图发送的消息发送到服务器。我知道这不是连接,因为在创建套接字时,我将setKeepAlive()设置为true,当我试图发送消息时不会引发异常,socket.isconnected()返回true,如果我试图在发送消息之前连接套接字,它会引发“已经连接”的异常。
我正在使用网络库和浏览器上的WebSocket实现一个套接字节点服务器。我正在成功使用telnet,但浏览器工作不正常。浏览器成功连接到套接字服务器并发送消息。我的服务器实现了一个事件,并立即触发和事件<代码>关闭,事件在断开连接时执行删除客户端(关闭浏览器,连接松动…)。 我不希望浏览器发送消息,然后断开连接。有人知道问题出在哪里吗? 套接字服务器 客户端(浏览器) 浏览器连接到服务器时的输出
问题内容: 我正在尝试用两个客户端实现一个系统,其中一个客户端发送一条消息,而另一个客户端将接收该消息。下图将以更直观的方式对其进行解释: 因此,客户端1将消息发送到服务器(此工作正常),服务器接收到“推送”消息并发出应由客户端2接收的“弹出”消息。这里的问题是客户端2从未收到“流行”消息。:( 这是所有代码。 SERVER.JS 客户1(aka mobile.html) 客户2(aka web.
我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误: Digite uma msg casa java.io.eofexception位于java.io.datainput
问题内容: 我有一个C ++服务器和两个客户端(红宝石和Java)。一切都在64位linux机器(java 1.7.0_17)上运行。ruby客户端可以正常工作,但是java版本会出现问题。 在Java中,我尝试将字符串从客户端发送到服务器。实际上,服务器收到了整个字符串,但是服务器认为还有更多东西要接收。 红宝石客户端看起来像这样: 这里的一切工作正常。红宝石客户端发送一个字符串。服务器接收该字