请老手帮忙解答,自己实在找不出问题,这个架构是书上的,我用自己的写做方式写出来也是不能访问,是不是逻辑上有问题,请明示,谢谢
代码片段如下/*
* Created on 2005-7-1
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package a.a.a;//import
import java.awt.*;
import java.awt.Event;
import java.awt.event.*;
import java.awt.color.*;
import java.awt.Color;
import java.applet.*;
import java.net.*;import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JApplet;import java.io.*;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.io.BufferedReader;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.util.StringTokenizer;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class chatServer extends JFrame{
/**
* @see constructor
* */
public chatServer(){
//init port
int serverInPort = 6001;
int serverOutPort = 6002;
ServerSocket serverInSocket;
ServerSocket serverOutSocket;
MainThread mainThread;
// create panel
Container cp = getContentPane();
cp.setLayout(new FlowLayout(FlowLayout.LEFT));
setSize(400,350);
setResizable(false);
setTitle("Chat Server");
cp.setLocation(100,30);
JTextArea serverInfo = new JTextArea(15,35);
serverInfo.setBackground(Color.black);
serverInfo.setForeground(Color.white);
JButton closeWindow = new JButton("Close Server");
closeWindow.addActionListener(new closeButtonListener());
cp.add(new JScrollPane(serverInfo));
cp.add(closeWindow);
show();
try{
serverInSocket = new ServerSocket(serverInPort);
serverOutSocket = new ServerSocket(serverOutPort);
}catch(IOException e){
System.out.println("Create ServerSocket Fail!");
System.exit(1);
}
} /**
* @see action listener close button
* */
class closeButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
/**
* @see main thread
* */
class MainThread extends Thread{
public void run(){
while(true){
try{
synchronized(this){
Socket clientInSocket = serverInSocket.accept();
Socket clientOutSocket = serverOutSocket.accept();
ChildThread childThread = new ChildThread(clientInSocket,clientOutSocket);
childThread.start();
}
}catch(IOException e){
System.out.println("Client Connect Fail");
System.exit(0);
}
}
}
}
/**
* @see chile thread
* */
class ChildThread extends Thread{
Socket clientInSocket;
Socket clientOutSocket;
PrintStream serverWriter;
BufferedReader serverReader;
String receiveMsg;
StringTokenizer st;
String serverIp;
ChildThread(Socket clientInSocket,Socket clientOutSocket){
this.clientInSocket = clientInSocket;
this.clientOutSocket = clientOutSocket;
try{
//send message to client
serverWriter = new PrintStream(clientOutSocket.getOutputStream());
// synchronization
//synchronized(this){}
}catch(IOException e){
System.out.println("Thread Create Fail");
System.exit(0);
}
}
}
/**
* @see log
* */
public void logWrite(String s){
serverInfo.setText(s + "/n");
//问题出在上面和下边几个代码段里,我想使用 serverInfo的setText的属性,但是访问不了,请问是什么原因???
}
/**
* @see set null
* */
public void finalize(){
}
/**
* main function
* */
public static void main(String[] args) {
chatServer newServer = new chatServer();
}}
代码片段如下/*
* Created on 2005-7-1
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package a.a.a;//import
import java.awt.*;
import java.awt.Event;
import java.awt.event.*;
import java.awt.color.*;
import java.awt.Color;
import java.applet.*;
import java.net.*;import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JApplet;import java.io.*;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.io.BufferedReader;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.util.StringTokenizer;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class chatServer extends JFrame{
/**
* @see constructor
* */
public chatServer(){
//init port
int serverInPort = 6001;
int serverOutPort = 6002;
ServerSocket serverInSocket;
ServerSocket serverOutSocket;
MainThread mainThread;
// create panel
Container cp = getContentPane();
cp.setLayout(new FlowLayout(FlowLayout.LEFT));
setSize(400,350);
setResizable(false);
setTitle("Chat Server");
cp.setLocation(100,30);
JTextArea serverInfo = new JTextArea(15,35);
serverInfo.setBackground(Color.black);
serverInfo.setForeground(Color.white);
JButton closeWindow = new JButton("Close Server");
closeWindow.addActionListener(new closeButtonListener());
cp.add(new JScrollPane(serverInfo));
cp.add(closeWindow);
show();
try{
serverInSocket = new ServerSocket(serverInPort);
serverOutSocket = new ServerSocket(serverOutPort);
}catch(IOException e){
System.out.println("Create ServerSocket Fail!");
System.exit(1);
}
} /**
* @see action listener close button
* */
class closeButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
/**
* @see main thread
* */
class MainThread extends Thread{
public void run(){
while(true){
try{
synchronized(this){
Socket clientInSocket = serverInSocket.accept();
Socket clientOutSocket = serverOutSocket.accept();
ChildThread childThread = new ChildThread(clientInSocket,clientOutSocket);
childThread.start();
}
}catch(IOException e){
System.out.println("Client Connect Fail");
System.exit(0);
}
}
}
}
/**
* @see chile thread
* */
class ChildThread extends Thread{
Socket clientInSocket;
Socket clientOutSocket;
PrintStream serverWriter;
BufferedReader serverReader;
String receiveMsg;
StringTokenizer st;
String serverIp;
ChildThread(Socket clientInSocket,Socket clientOutSocket){
this.clientInSocket = clientInSocket;
this.clientOutSocket = clientOutSocket;
try{
//send message to client
serverWriter = new PrintStream(clientOutSocket.getOutputStream());
// synchronization
//synchronized(this){}
}catch(IOException e){
System.out.println("Thread Create Fail");
System.exit(0);
}
}
}
/**
* @see log
* */
public void logWrite(String s){
serverInfo.setText(s + "/n");
//问题出在上面和下边几个代码段里,我想使用 serverInfo的setText的属性,但是访问不了,请问是什么原因???
}
/**
* @see set null
* */
public void finalize(){
}
/**
* main function
* */
public static void main(String[] args) {
chatServer newServer = new chatServer();
}}
解决方案 »
- 怎么把数据库表的内容传入JTable
- 如何循环创建一系列文件
- 学完java可是感觉用不上!
- 关于JOptionPane() 的用法,请教各位
- JTree 为选中的节点所在行减价背景色
- Runtime.getRuntime.exe() 为什么只能启动windows 自带的进程?
- 用JSF + Spring + JPA框架开发一个学生管理的Web应用程序,该怎么做呢??
- 在使用JDK1.4的正则表达式功能时,发现如果被搜索的字符太多,例如一篇文章.就会报错
- 又来麻烦老哥老姐们了,搞了一个星期了,请问如何......?(一个十分想学好JAVA的弟弟),谢谢您!
- 请问手机短消息用的是什么编码方式?该怎么转换?
- 多个结构相同的ResultSet可否合并???
- 请各位帮忙!怎么实现message接口?
* Created on 2005-7-1
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
//import
import java.awt.*;
import java.awt.Event;
import java.awt.event.*;
import java.awt.color.*;
import java.awt.Color;
import java.applet.*;
import java.net.*;import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JApplet;import java.io.*;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.io.BufferedReader;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.util.StringTokenizer;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class chatServer extends JFrame{
/**
* @see constructor
* */
ServerSocket serverInSocket;
ServerSocket serverOutSocket;
JTextArea serverInfo = new JTextArea(15,35); public chatServer(){
//init port
int serverInPort = 6001;
int serverOutPort = 6002;
//ServerSocket serverInSocket;
//ServerSocket serverOutSocket;
MainThread mainThread;
// create panel
Container cp = getContentPane();
cp.setLayout(new FlowLayout(FlowLayout.LEFT));
setSize(400,350);
setResizable(false);
setTitle("Chat Server");
cp.setLocation(100,30);
//JTextArea serverInfo = new JTextArea(15,35);
serverInfo.setBackground(Color.black);
serverInfo.setForeground(Color.white);
JButton closeWindow = new JButton("Close Server");
closeWindow.addActionListener(new closeButtonListener());
cp.add(new JScrollPane(serverInfo));
cp.add(closeWindow);
show();
try{
serverInSocket = new ServerSocket(serverInPort);
serverOutSocket = new ServerSocket(serverOutPort);
}catch(IOException e){
System.out.println("Create ServerSocket Fail!");
System.exit(1);
}
} /**
* @see action listener close button
* */
class closeButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
/**
* @see main thread
* */
class MainThread extends Thread{
public void run(){
while(true){
try{
synchronized(this){
Socket clientInSocket = serverInSocket.accept();
Socket clientOutSocket = serverOutSocket.accept();
ChildThread childThread = new ChildThread(clientInSocket,clientOutSocket);
childThread.start();
}
}catch(IOException e){
System.out.println("Client Connect Fail");
System.exit(0);
}
}
}
}
/**
* @see chile thread
* */
class ChildThread extends Thread{
Socket clientInSocket;
Socket clientOutSocket;
PrintStream serverWriter;
BufferedReader serverReader;
String receiveMsg;
StringTokenizer st;
String serverIp;
ChildThread(Socket clientInSocket,Socket clientOutSocket){
this.clientInSocket = clientInSocket;
this.clientOutSocket = clientOutSocket;
try{
//send message to client
serverWriter = new PrintStream(clientOutSocket.getOutputStream());
// synchronization
//synchronized(this){}
}catch(IOException e){
System.out.println("Thread Create Fail");
System.exit(0);
}
}
}
/**
* @see log
* */
public void logWrite(String s){
serverInfo.setText(s + "/n");
//问题出在上面和下边几个代码段里,我想使用 serverInfo的setText的属性,但是访问不了,请问是什么原因???
}
/**
* @see set null
* */
public void finalize(){
}
/**
* main function
* */
public static void main(String[] args) {
chatServer newServer = new chatServer();
}}
因为你定义的那个东东在构造函数中,所以不能调用.只要将变量定义在类中成全局变量就可以的.
我修改后的代码现在好使了.