已经建立连接,Server窗口显示"A client connected."
然后在Server窗口输入"Hello",但是Client窗口什么也没接收到,怎么回事呢?==[TCPServer.java]==
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(6000);
Socket s = null;
BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = null;
BufferedReader br = null;
while(true) {
s = server.accept();
System.out.println("A client connected.");
pw = new PrintWriter(s.getOutputStream());
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = null;
while(true) {
str = localBr.readLine();
System.out.println("Server: " + str);
pw.write("Server: " + str);
System.out.println(br.readLine());
if(str.equalsIgnoreCase("exit")) {
break;
}
}
pw.close();
br.close();
localBr.close();
s.close();
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("error in server");
}
}
}
==[TCPClient.java]==
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
Socket s = new Socket("222.90.199.75", 6000);
BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
String str = null;
while(true) {
System.out.println(br.readLine());
str = localBr.readLine();
System.out.println(str);
pw.write(str);
if(str.equalsIgnoreCase("exit")) {
break;
}
}
br.close();
pw.close();
localBr.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
然后在Server窗口输入"Hello",但是Client窗口什么也没接收到,怎么回事呢?==[TCPServer.java]==
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(6000);
Socket s = null;
BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = null;
BufferedReader br = null;
while(true) {
s = server.accept();
System.out.println("A client connected.");
pw = new PrintWriter(s.getOutputStream());
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = null;
while(true) {
str = localBr.readLine();
System.out.println("Server: " + str);
pw.write("Server: " + str);
System.out.println(br.readLine());
if(str.equalsIgnoreCase("exit")) {
break;
}
}
pw.close();
br.close();
localBr.close();
s.close();
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("error in server");
}
}
}
==[TCPClient.java]==
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
Socket s = new Socket("222.90.199.75", 6000);
BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
String str = null;
while(true) {
System.out.println(br.readLine());
str = localBr.readLine();
System.out.println(str);
pw.write(str);
if(str.equalsIgnoreCase("exit")) {
break;
}
}
br.close();
pw.close();
localBr.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.*;
import java.util.List;
public class TestServer extends Frame{
TextArea ta;
ServerSocket ss;
Socket sk;
String str;
List<client> clients=new ArrayList<client>();
public void showFrame(){
this.setBounds(100, 100, 300, 200);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(-1);
}
});
this.add(getTa());
this.setResizable(false);
this.setVisible(true);
start();
}
public static void main(String[] args) {
TestServer ts=new TestServer ();
ts.showFrame(); }//该方法用于输入数据
//连接客户端
public void start(){
try {
ss=new ServerSocket(8888);
while(true){
sk=ss.accept();
ta.setText(ta.getText()+sk.getPort()+'\n');
client c=new client(sk);
new Thread(c).start();
clients.add(c);
}
} catch (IOException e) {
e.printStackTrace();
}
}
//显示接收到的内容
public TextArea getTa() {
ta=new TextArea(8,30);
return ta;
}
private class client implements Runnable{
private Socket sk;
DataInputStream dis;
DataOutputStream dos;
public client(Socket sk){
this.sk=sk;
}
public void send(String cstr){
try {
dos=new DataOutputStream(sk.getOutputStream());
dos.writeUTF(cstr);
} catch (IOException e) {
e.printStackTrace();
}
}
public void recieve(){
try {
dis=new DataInputStream(sk.getInputStream());
while(true){
str=dis.readUTF();
ta.setText(ta.getText()+str+'\n');
for(int i=0;i<clients.size();i++){
client cc=clients.get(i);
cc.send(str);
}
//for(int i=0;i<clients.size();i++) {
//client cc =clients.get(i);
//cc.send(cstr);
}
//}
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
recieve();
}
}}
客户端
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Testclient extends Frame{
TextArea ta;
TextField tf;
Socket sk;
DataOutputStream dos;
DataInputStream dis;
String str=null;
public void showFrame(){
this.setBounds(100, 100, 300, 200);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(-1);
}
});
this.add(getTa(),BorderLayout.NORTH);
this.add(getTf(),BorderLayout.SOUTH);
this.setResizable(false);
this.setVisible(true);
connect();
while(true){
recieve();
}
}
public static void main(String[] args) {
Testclient tc=new Testclient();
tc.showFrame(); }//该方法用于接收信息
public void recieve(){
try {
dis=new DataInputStream(sk.getInputStream());
// while(true){
String js=dis.readUTF();
ta.setText(ta.getText()+js+'\n');
//}
} catch (IOException e) {
e.printStackTrace();
}
}
//改方法用于向服务器发送信息
public void send(){
try {
dos=new DataOutputStream(sk.getOutputStream());
dos.writeUTF(str);
} catch (IOException e) {
e.printStackTrace();
}
}
public TextArea getTa() {
ta=new TextArea(8,30);
return ta;
}
//该方法用于连接服务器
public void connect(){
try {
sk=new Socket("127.0.0.1",8888);
System.out.println("发送");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//文本区
public TextField getTf() {
tf=new TextField(30);
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
str=tf.getText();
//ta.setText(ta.getText()+str+'\n');
tf.setText("");
send();
}
});
return tf;
}}