作者chen1025 (小陈)
看板java
标题[问题] 关於Socket与多执行绪的变数问题
时间Sun Nov 30 18:07:16 2008
这程式主要是透过socket
用来server端跟clent都能够相互对话
原来的程式只能够一对一
也就是
一个讲完换另外一个讲
因为原本的程式是读取readLine()完後,才会执行
我希望能透过java所提供的多执行绪的功能
能够打破这样的限制
可是透过多执行绪的过程当中
必须撰写另外的class
我把socket所产生的物件
丢入到建构子当中
却会产生变数读取的问题
有人能帮我解决吗
//原本的程式=>只能一个讲完换另外一个讲
import java.io.*;
import java.net.*;
import java.text.*;
import java.util.*;
import java.util.Date;
public class Server{
private static ServerSocket servSock;
private static final int PORT = 23;
public static void main(String[] args)throws IOException{
System.out.println("等候对方连线中\n");
servSock = new ServerSocket(PORT);
Socket link = null;
link = servSock.accept();
BufferedReader input = new BufferedReader(new InputStreamReader(link.getInputStream()));
BufferedReader type = new BufferedReader(new InputStreamReader(System.in));
PrintWriter output = new PrintWriter(link.getOutputStream(), true);
String message_from_client;
String message_from_server;
output.println("欢迎来到主机伺服器:欢迎与管理员对话");
do{
message_from_client = input.readLine();
System.out.println(message_from_client);
message_from_server = type.readLine(); //一对一对话
output.println(message_from_server);
}while(true);
}
}
//想改成下列的程式,透过多执行绪,可以双方不限次序重复讲,但是不知道怎麽改才会正确
import java.io.*;
import java.net.*;
import java.text.*;
import java.util.*;
import java.util.Date;
public class Server{
private static ServerSocket servSock;
private static final int PORT = 23;
public static void main(String[] args)throws IOException{
System.out.println("等候对方连线中\n");
servSock = new ServerSocket(PORT);
Socket link = null;
link = servSock.accept();
BufferedReader input = new BufferedReader(new InputStreamReader(link.getInputStream()));
BufferedReader type = new BufferedReader(new InputStreamReader(System.in));
PrintWriter output = new PrintWriter(link.getOutputStream(), true);
String message_from_client;
String message_from_server;
do{
output.println("欢迎来到主机伺服器:欢迎与管理员对话");
Talk_form_server from_server = new Talk_form_server( );//这边原本丢入三个物件,产生的input type output stream物件
Talk_form_client from_client = new Talk_form_client( );//但是透过建构子传值就出问题
from_server.start();
from_client.start();
}while(true);
}
}
class Talk_form_server extends Thread{
Talk_form_server (){
/*建构子*/
}
public void run(){
do{
message_from_server = type.readLine();
output.println(message_from_server);
}while(true);
}
}
class Talk_form_client extends Thread{
public Talk_form_client(){
/*建构子*/
}
public void run(){
do{
message_from_client = input.readLine();
System.out.println(message_from_client);
}while(true);
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.79.215