import java.io.IOException;
import java.io.*;
import java.io.OutputStream;import java.net.*;
import java.io.DataOutputStream;import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;public class EchoServer {
private int isOk;
private ServerSocket ss = null;
class ReceiveThread extends Thread {
private Socket socket = null;
public ReceiveThread(Socket socket) {
super("ReceiveThread");
this.socket = socket;
}
public void run() {
InputStream in = null;
while (true) { try {
in = socket.getInputStream();
InetAddress ip=socket.getInetAddress();
String string_ip=ip.toString().substring(1);
String temp;
System.out.println("连接ip"+ip);
BufferedReader br=new BufferedReader(new InputStreamReader(in));
while((temp=br.readLine())!=null)
{
System.out.println("receive client message :"+ temp);
if(!temp.equals(""))
{
OutputStream out = socket.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
pw.println("1");
String divide[]=temp.split("/");
Sql log =new Sql();
if(log.Logo(divide[0], divide[1])==1)
{
log.update_Ip(string_ip,divide[0]);
}
}
}
} catch (IOException e) {
try {socket.close();
in.close();
//dis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
} }
}
public void send(Socket socket) throws IOException {
} public class AcceptSocketThread extends Thread {
public AcceptSocketThread() {
super("AcceptSocketThread");
}
public void run() {
try {
ss = new ServerSocket(6000); while (true) {
Socket socket = ss.accept();
new ReceiveThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
try{
ss.close();
}
catch(IOException e2)
{}
} }
} public void start() {
new AcceptSocketThread().start();
}
}
还是把全部代码贴出来吧!!
客户端没问题,关键是服务器的问题。OutputStream out = socket.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
pw.println("1");
这段代码已经是执行了,但是客户端收不到,如果把它放到while的前面又行
import java.io.*;
import java.io.OutputStream;import java.net.*;
import java.io.DataOutputStream;import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;public class EchoServer {
private int isOk;
private ServerSocket ss = null;
class ReceiveThread extends Thread {
private Socket socket = null;
public ReceiveThread(Socket socket) {
super("ReceiveThread");
this.socket = socket;
}
public void run() {
InputStream in = null;
while (true) { try {
in = socket.getInputStream();
InetAddress ip=socket.getInetAddress();
String string_ip=ip.toString().substring(1);
String temp;
System.out.println("连接ip"+ip);
BufferedReader br=new BufferedReader(new InputStreamReader(in));
while((temp=br.readLine())!=null)
{
System.out.println("receive client message :"+ temp);
if(!temp.equals(""))
{
OutputStream out = socket.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
pw.println("1");
String divide[]=temp.split("/");
Sql log =new Sql();
if(log.Logo(divide[0], divide[1])==1)
{
log.update_Ip(string_ip,divide[0]);
}
}
}
} catch (IOException e) {
try {socket.close();
in.close();
//dis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
} }
}
public void send(Socket socket) throws IOException {
} public class AcceptSocketThread extends Thread {
public AcceptSocketThread() {
super("AcceptSocketThread");
}
public void run() {
try {
ss = new ServerSocket(6000); while (true) {
Socket socket = ss.accept();
new ReceiveThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
try{
ss.close();
}
catch(IOException e2)
{}
} }
} public void start() {
new AcceptSocketThread().start();
}
}
还是把全部代码贴出来吧!!
客户端没问题,关键是服务器的问题。OutputStream out = socket.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
pw.println("1");
这段代码已经是执行了,但是客户端收不到,如果把它放到while的前面又行
Socket s1 = s.accept();
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("text");
这样写试试 仅供参考
PrintWriter pw=new PrintWriter(out,true);
pw.write("1");
更何况在while里面定义。每次循环就定义一个对象。这样不好。注意范围问题。
http://www.zhangpeng.com.cn/article.asp?id=39
用DataOutputStream 这个流的UTF-8试试。以前我测试通过。