我开始连服务器端都收不到消息,后面改成这样才可以
server:
import java.io.*;
import java.net.*;
public class MyServer extends Thread{
private Socket client;
public MyServer(Socket c) {
this.client=c;
}
public void run(){
try{
String str;
BufferedReader bfd = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedReader KeyBr = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps = new PrintStream(client.getOutputStream());
/////将客户机的内容在屏幕上显示
System.out.println("服务器");
while(true){
str = bfd.readLine();
System.out.println(str);
str = KeyBr.readLine();
ps.println(str);
}
/*
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
boolean eof=true;
while(eof){
String str=in.readLine();
if(str!=null){
System.out.println(str);
/* System.out.println("准备向客户端发送信息");
//向客户发送信息;
String returnInfo="已经成功接受信息" ;
out.print(returnInfo);
//System.out.println(returnInfo);
out.flush();
//break;
}
else{
eof=false;
}
}
// client.close();*/
}
catch(Exception e){
System.out.println(e.toString());
}
}
public static void main(String args[]){
ServerSocket server=null;
Socket client=null;
try{
server=new ServerSocket(15677);
while(true){
MyServer ms=new MyServer(server.accept());
ms.start();
}
}
catch(Exception e){
System.out.println(e.toString());
}
}
}
client:
import java.io.*;
import java.net.*;public class Client {
static Socket server;
public static void main(String[] args) {
try {
server = new Socket(InetAddress.getLocalHost(), 15677);
BufferedReader KeyBr = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(server.getInputStream()));
String str;
PrintStream ps = new PrintStream(server.getOutputStream());
while(true){
str = KeyBr.readLine();
ps.println(str);
str = br.readLine();
System.out.println(str);
}
/*
PrintWriter out = new PrintWriter(server.getOutputStream()); BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(server.getInputStream()));
String str;
// PrintStream ps = new PrintStream(ss.getOutputStream());
// while (true) {
// BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
// String str = wt.readLine();
// out.print(str);
// out.flush();
// str = str.substring(0, 3);
// if (str.equals("end")) {
// break;
// }
// }
/* System.out.println("等待返回信息");
//等待服务器返回信息
while(true){
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
String serverOut=in.readLine();
if(serverOut!=null){
System.out.println(serverOut);
}
break;
}*/
// server.close();
}
catch (Exception e) {
System.out.println(e.toString());
}
}
}
server:
import java.io.*;
import java.net.*;
public class MyServer extends Thread{
private Socket client;
public MyServer(Socket c) {
this.client=c;
}
public void run(){
try{
String str;
BufferedReader bfd = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedReader KeyBr = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps = new PrintStream(client.getOutputStream());
/////将客户机的内容在屏幕上显示
System.out.println("服务器");
while(true){
str = bfd.readLine();
System.out.println(str);
str = KeyBr.readLine();
ps.println(str);
}
/*
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
boolean eof=true;
while(eof){
String str=in.readLine();
if(str!=null){
System.out.println(str);
/* System.out.println("准备向客户端发送信息");
//向客户发送信息;
String returnInfo="已经成功接受信息" ;
out.print(returnInfo);
//System.out.println(returnInfo);
out.flush();
//break;
}
else{
eof=false;
}
}
// client.close();*/
}
catch(Exception e){
System.out.println(e.toString());
}
}
public static void main(String args[]){
ServerSocket server=null;
Socket client=null;
try{
server=new ServerSocket(15677);
while(true){
MyServer ms=new MyServer(server.accept());
ms.start();
}
}
catch(Exception e){
System.out.println(e.toString());
}
}
}
client:
import java.io.*;
import java.net.*;public class Client {
static Socket server;
public static void main(String[] args) {
try {
server = new Socket(InetAddress.getLocalHost(), 15677);
BufferedReader KeyBr = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(server.getInputStream()));
String str;
PrintStream ps = new PrintStream(server.getOutputStream());
while(true){
str = KeyBr.readLine();
ps.println(str);
str = br.readLine();
System.out.println(str);
}
/*
PrintWriter out = new PrintWriter(server.getOutputStream()); BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(server.getInputStream()));
String str;
// PrintStream ps = new PrintStream(ss.getOutputStream());
// while (true) {
// BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
// String str = wt.readLine();
// out.print(str);
// out.flush();
// str = str.substring(0, 3);
// if (str.equals("end")) {
// break;
// }
// }
/* System.out.println("等待返回信息");
//等待服务器返回信息
while(true){
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
String serverOut=in.readLine();
if(serverOut!=null){
System.out.println(serverOut);
}
break;
}*/
// server.close();
}
catch (Exception e) {
System.out.println(e.toString());
}
}
}
解决方案 »
- 采用ZipInputStream解压zip格式的文件,遇到一个问题。。。。。
- 使用java io流一次性写入大量数据与逐个写入数据或与逐批写入数据有什么区别
- JDK1.6中Jtable排序,列标题有时候出现上下方向键头,有时候不出现????
- jTabbedPane, JPanel出现问题,求救!!!!
- 谁能给我一个连接sql server的例子? 谢谢
- Jasper reprot Overriding bean definition异常
- 精通java com口通讯的朋友请帮忙!解决问题马上给100分,欢迎大家讨论,分不够可以再加!
- 我要开题了,快来help me.来者有分
- 求类似于JB中Database Pilot的实现
- 这样快速补全代码
- 这个是什么问题!有谁能够解决啊!
- 关于Rectangle 类
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
public class ChattingServer {
static final int PORT = 8080;
public static void main(String[] args)
throws IOException {
ToAll toall=new ToAll();
ServerSocket s = new ServerSocket(PORT);
System.out.println("Server Started");
try {
while(true) {
Socket socket = s.accept();
try {
ServeOneJabber server=new ServeOneJabber(socket);
toall.count++;
toall.temp=toall.count;
server.start();
} catch(IOException e) {
socket.close();
}
System.out.println(toall.count);
}
} finally {
s.close();
}
}
}
class ServeOneJabber extends Thread{
public ServeOneJabber(Socket s)
throws IOException{
socket=s;
send=new ToAll();
in=
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
send.out[send.count]=
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
}
public void run(){
receiveThread receivethread=new receiveThread();
receivethread.start();
sendThread sendthread=new sendThread();
sendthread.start();
}
private class receiveThread extends Thread{
public void run(){
try{
try{
while(true){
String str=in.readLine();
// if(str.equals("end")) break;
send.strcon=str;
System.out.println(str);
sleep(150);
}
}
catch(InterruptedException e){
}
System.out.println("closing...");
}
catch(IOException e){
}finally{
try{
socket.close();
}
catch(IOException e){
}
}
}
}
private class sendThread extends Thread{
public void run(){
try{
while(true){
if(send.strcon!=null){
send.temp=send.count;
for(int i=0;i<send.temp;i++){
send.out[i].println(send.strcon);
}
send.strcon=null;
}
sleep(100);
}
}
catch(InterruptedException e){
}
}
} private class TimeEvent implements ActionListener{
public void actionPerformed(ActionEvent event){
send.strcon=null;
}
}
private ToAll send;
private Socket socket;
private BufferedReader in;
public static PrintWriter out[];
}
class ToAll {
public static int count=0;
public static int temp;
public static String strcon;
public static PrintWriter out[]=new PrintWriter[10];
}
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;public class ChattingClient{
public static void main(String[] args){
try{
RoomFrame frame=new RoomFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
catch(IOException e){
}
}
}class RoomFrame extends JFrame{
public RoomFrame()
throws IOException {
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
setTitle("聊天室");
setSize(screenSize.height/2,screenSize.width/2);
setLocation(screenSize.height/2,screenSize.width/8);
send=new JButton("发送");
sendContent=new JTextField(27);
sendPanel=new JPanel();
sendPanel.add(sendContent);
sendPanel.add(send);
room=new JTextArea();
JScrollPane scrollPane=new JScrollPane(room);
sendAction senda=new sendAction();
send.addActionListener(senda);
Container contantPane=getContentPane();
contantPane.add(sendPanel,BorderLayout.SOUTH);
contantPane.add(scrollPane,BorderLayout.CENTER);
room.setEditable(false);
room.setLineWrap(true);
InputMap imap=sendPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,Event.CTRL_MASK),"sendkey");
ActionMap amap=sendPanel.getActionMap();
amap.put("sendkey",senda);
//connection
InetAddress addr =
InetAddress.getByName(null);
try{
socket = new Socket(addr, 8080);
socket.setSoTimeout(10000); System.out.println("socket = " + socket);
in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
}
catch(IOException e){
}
receiveThread receive=new receiveThread();
receive.start();
}
private class receiveThread extends Thread{
public void run(){
try{
while(true){
try{
String str = in.readLine();
room.append(str+'\n');
}
catch(IOException e){
}
sleep(1000);
}
}
catch(InterruptedException exception){
}
}
}
private class sendAction extends AbstractAction{
public void actionPerformed(ActionEvent evt){
out.println(sendContent.getText());
sendContent.setText("");
}
}
private BufferedReader in;
private PrintWriter out;
private Socket socket;
private JTextArea room;
private JPanel sendPanel;
private JTextField sendContent;
private JButton send;
}
然后当某个用户发的消息向arraylist中所有用户转发
我试了一下直接sleep(1000)和this.sleep(1000)都不行。