在简单的网络编程的演示程序中,通过在服务器端使用多线程来对多个客户端连接请求进行应答。我想通过命令行参数来传递消息,但在服务器程序中write()是被定义在run()中的,如何将string[] args传入write()中呢?下面是服务器程序:
mport java.net.*;
import java.io.*;
class Test extends Thread
{
private Socket s;
public Test(Socket s)
{
this.s=s;
}
public void run()
{
try {
OutputStream os=s.getOutputStream();
InputStream is=s.getInputStream();
for(int i = 0;i < args.length;i++)
{
os.write(args[i].getBytes());
}
byte[] buf=new byte[100];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
is.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args)
{
server();
}
public static void server()
{
try {
ServerSocket ss=new ServerSocket(6000);
while(true)
{
Socket s = ss.accept();
new Test(s).start();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
mport java.net.*;
import java.io.*;
class Test extends Thread
{
private Socket s;
public Test(Socket s)
{
this.s=s;
}
public void run()
{
try {
OutputStream os=s.getOutputStream();
InputStream is=s.getInputStream();
for(int i = 0;i < args.length;i++)
{
os.write(args[i].getBytes());
}
byte[] buf=new byte[100];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
is.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args)
{
server();
}
public static void server()
{
try {
ServerSocket ss=new ServerSocket(6000);
while(true)
{
Socket s = ss.accept();
new Test(s).start();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
实际是很简单的问题,在test()中忘了this.args = args.