当前位置:编程学习 > wap >>

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,也没有报错
请问高人代码哪里有问题啊?
--------------------编程问答-------------------- 这不是等待读取数据嘛 --------------------编程问答--------------------
引用 1 楼 qianfu111 的回复:
这不是等待读取数据嘛

客户端已经发送了很多条了,但是服务器一条消息都没打印出来啊 --------------------编程问答-------------------- 那何不查查客户端是否有问题? --------------------编程问答-------------------- readline呀,你client写入的时候加换行符了吗?好像没有吧,加上看看。 --------------------编程问答-------------------- 找到原因了
确实是换行符的问题
把  pw.write("client:现在时间:"+new Date());
换成 pw.println("client:现在时间:"+new Date());就能收到了 --------------------编程问答--------------------  pw.println("client:现在时间:"+new Date()); --------------------编程问答--------------------  socket = server.accept();    放到循环里
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,