socket 是建立连接的.服务器端负责监听,所以建立连接后客户端就能给服务器端发送消息.为什么我建立了连接只能发送一次.如果把客户端每次发送消息都重新建立socket连接,就能连续发送.
看下面的程序,就是只能发送一次.
谁能高诉我为什么,是不是我理解错了......server端:import java.io.*;
import java.net.*;
public class Server2 extends Thread
{
private Socket ss;
public Server2(Socket ss)
{
this.ss=ss;
} public void run()
{
try{
InputStream in=ss.getInputStream();
OutputStream out=ss.getOutputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
if(len>0)
{
System.out.println(new String(buf,0,len));
}
out.write("欢迎你哦!".getBytes());
in.close();
out.close();
ss.close();
}
catch(Exception e)
{
System.out.println("thread creat fall");
e.printStackTrace();
}
}
public static void main(String[] srgs)
{
try
{
ServerSocket server=new ServerSocket(6000);
while(true)
{
Socket ss=server.accept();
new Server2(ss).start();
} }
catch(Exception e)
{System.out.println("ERRo"+e);
e.printStackTrace();
}
}
}clinet 端:
import java.io.*;
import java.net.*;
public class Client2
{
public static void main(String[] args)
{
try
{
Socket ss=new Socket("localhost",6000);
InputStream in=ss.getInputStream();
OutputStream out=ss.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(out);
BufferedReader bin=new BufferedReader(new InputStreamReader(System.in));
String str=new String("");
for(int i=1;i<10000;i++)
{
str=bin.readLine();
System.out.println("ni shu ru de zifu shi:"+str);
bos.write(str.getBytes());
bos.flush();
}
in.close();
out.close();
ss.close();
bos.close();
}
catch(Exception e)
{
System.out.println("ERRO"+e);
e.printStackTrace();
}
}
}
看下面的程序,就是只能发送一次.
谁能高诉我为什么,是不是我理解错了......server端:import java.io.*;
import java.net.*;
public class Server2 extends Thread
{
private Socket ss;
public Server2(Socket ss)
{
this.ss=ss;
} public void run()
{
try{
InputStream in=ss.getInputStream();
OutputStream out=ss.getOutputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
if(len>0)
{
System.out.println(new String(buf,0,len));
}
out.write("欢迎你哦!".getBytes());
in.close();
out.close();
ss.close();
}
catch(Exception e)
{
System.out.println("thread creat fall");
e.printStackTrace();
}
}
public static void main(String[] srgs)
{
try
{
ServerSocket server=new ServerSocket(6000);
while(true)
{
Socket ss=server.accept();
new Server2(ss).start();
} }
catch(Exception e)
{System.out.println("ERRo"+e);
e.printStackTrace();
}
}
}clinet 端:
import java.io.*;
import java.net.*;
public class Client2
{
public static void main(String[] args)
{
try
{
Socket ss=new Socket("localhost",6000);
InputStream in=ss.getInputStream();
OutputStream out=ss.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(out);
BufferedReader bin=new BufferedReader(new InputStreamReader(System.in));
String str=new String("");
for(int i=1;i<10000;i++)
{
str=bin.readLine();
System.out.println("ni shu ru de zifu shi:"+str);
bos.write(str.getBytes());
bos.flush();
}
in.close();
out.close();
ss.close();
bos.close();
}
catch(Exception e)
{
System.out.println("ERRO"+e);
e.printStackTrace();
}
}
}
解决方案 »
- jdbc调用oracle存储过程返回自定义列表的问题
- Web界面上自定义控件
- 关于一个很菜的问题
- XYLayout是什么东西啊,我在JAVA2的DOC里找不到啊
- JDK怎样设置在CMD中 也就是环境变量的设置
- 网上的西欧字符是用什么编码?为什么和UNICODE编码不一样?
- 急!在线等!用hashmap求频率最高的元素
- 学习java 的苦恼,高手请指点一下
- 关于package路径的设置
- 有关IE6下面图片装入自动提示信息的问题,有没有什么办法解决。
- eclipse的visual editor是VE-runtime-1.2.3_jem.zip么?
- swt designer的time类如何使用????
在run()中要一直不停的读下去,直到该关闭连接的时候。
while(true)
{}
循环里