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

java网络编程的一个练习题,为何程序不能运行出界面?

//Server.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class Server extends JFrame{
private JTextArea jtaMessage;
private ObjectInputStream in;
private ObjectOutputStream out;

public Server(){
this.setLayout(new BorderLayout());
add(new JScrollPane(jtaMessage=new JTextArea()),BorderLayout.CENTER);
jtaMessage.setWrapStyleWord(true);
jtaMessage.setEditable(false);

try {
ServerSocket serverSocket=new ServerSocket(9090);
jtaMessage.append("Server Started at "+new java.util.Date());
int clientNo=1;
while(true){
Socket socket=serverSocket.accept();
InetAddress inetAddress=socket.getInetAddress();
jtaMessage.append("Client No"+clientNo+"'s name is "+inetAddress.getHostName()+"\n");
jtaMessage.append("Client No"+clientNo+"'s address is "+inetAddress.getHostAddress()+"\n");

in=new ObjectInputStream(socket.getInputStream());
out=new ObjectOutputStream(socket.getOutputStream());
Student student=(Student)in.readObject();
System.out.println(student.toString());

clientNo++;
}
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args){
Server frame=new Server();
frame.setTitle("EX25.6 Server");
frame.setLocationRelativeTo(null);
frame.setSize(600,400);
frame.setVisible(true);
}
}

//Student.java
import java.io.Serializable;
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
private String studentId;
private String name;
private String dormitory;

public Student(){

}
public Student(String studentId,String name,String dormitory){
this.studentId=studentId;
this.name=name;
this.dormitory=dormitory;
}

public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDormitory() {
return dormitory;
}
public void setDormitory(String dormitory) {
this.dormitory = dormitory;
}
public String toString(){
return studentId+" "+name+" "+dormitory;
}
}
Java 网络编程 --------------------编程问答-------------------- 执行顺序的问题。你先执行这句
Server frame=new Server();
进入构造函数内,到这句
Socket socket=serverSocket.accept();
程序会形成阻塞,通信线程被挂起。下面的程序是无法执行的。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class Server extends JFrame {
private JTextArea jtaMessage;
private ObjectInputStream in;
private ObjectOutputStream out;

public Server() {
this.setLayout(new BorderLayout());
add(new JScrollPane(jtaMessage = new JTextArea()), BorderLayout.CENTER);
jtaMessage.setWrapStyleWord(true);
jtaMessage.setEditable(false);

}

public  void startScoket()
{
try {
ServerSocket serverSocket = new ServerSocket(9090);
jtaMessage.append("Server Started at " + new java.util.Date());
int clientNo = 1;
while (true) {
Socket socket = serverSocket.accept();
InetAddress inetAddress = socket.getInetAddress();
jtaMessage.append("Client No" + clientNo + "'s name is "
+ inetAddress.getHostName() + "\n");
jtaMessage.append("Client No" + clientNo + "'s address is "
+ inetAddress.getHostAddress() + "\n");

in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
// Student student=(Student)in.readObject();
// System.out.println(student.toString());

clientNo++;
}
} catch (Exception e) {
e.printStackTrace();
}

}

public static void main(String[] args) {
Server frame = new Server();
frame.setTitle("EX25.6 Server");
frame.setLocationRelativeTo(null);
frame.setSize(600, 400);
frame.setVisible(true);
frame.startScoket();
}
}
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,