Socket简单客户端服务端小问题
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
public class Client implements Runnable{
/**
* @param args
*/
public static void main(String[] args) {
Client c = new Client();
new Thread(c).start();
}
@Override
public void run() {
Socket socket = null;
PrintWriter pw = null;
try {
socket = new Socket("192.168.0.103",6666);
pw = new PrintWriter(socket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
while(true){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
pw.write("client:现在时间:"+new Date());
}
}
}
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server implements Runnable {
private ServerSocket server;
/**
* @param args
*/
public static void main(String[] args) {
Server server = new Server();
new Thread(server).start();
}
@Override
public void run() {
System.out.println("启动服务器");
Socket socket = null;
try {
server = new ServerSocket(6666);
System.out.println("等待客户端启动");
socket = server.accept();
System.out.println("客户端启动");
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
while (true) {
String str = null;
try {
System.out.println("等待消息");
str = br.readLine();
while ((str = br.readLine()) != null) {
System.out.println("收到消息");
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务器server.java启动后,在启动客户端Client.java
server控制台并没有打印出客户端发送端消息
debug server执行到str = br.readLine();时候跳步就跳不了了,没办法继续往下debug,也没有报错
请问高人代码哪里有问题啊?
--------------------编程问答-------------------- 这不是等待读取数据嘛 --------------------编程问答--------------------
客户端已经发送了很多条了,但是服务器一条消息都没打印出来啊 --------------------编程问答-------------------- 那何不查查客户端是否有问题? --------------------编程问答-------------------- readline呀,你client写入的时候加换行符了吗?好像没有吧,加上看看。 --------------------编程问答-------------------- 找到原因了
确实是换行符的问题
把 pw.write("client:现在时间:"+new Date());
换成 pw.println("client:现在时间:"+new Date());就能收到了 --------------------编程问答-------------------- pw.println("client:现在时间:"+new Date()); --------------------编程问答-------------------- socket = server.accept(); 放到循环里
补充:移动开发 , Android