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();
}
}
}
解决方案 »
- 求Key-Value单文件
- 如何终止一个处理网络访问的线程
- 关于JDK的源码!我的疑问!
- 有个小疑问,不知道未使用的变量对软件性能有无影响呢?
- 在日历日期仲添加备注,不知怎么实现
- 谁有windows编程相关的书要转让,或者换书. 我有《java编程思想》南宁市!!!
- 菜鸟问题:一个访问数据库的小程序
- 我有c++的基础,看什么书比较好??
- 关于《最新Java2核心技术(原理)》中的例子的问题,各位高手和看过此书的大虾看过来!!!
- 各位老大,初学java,如何选择辅导书,编译环境和酷站?
- eclipse的visual editor是VE-runtime-1.2.3_jem.zip么?
- swt designer的time类如何使用????
在run()中要一直不停的读下去,直到该关闭连接的时候。
while(true)
{}
循环里