最好能给个例子 用链表做缓冲 例子写的简单点 本人第一次接触这个东西 谢谢了
解决方案 »
- 获取插件源码问题 求指点 感激不尽!
- 求一个结果的原因
- 如何在JFrame或JInternalFrame的标题栏中添加自己的按钮,删除系统原有按钮,改变标题栏背景颜色等
- 2个小问题
- 怎么没有办法改变list的大小?
- package会影响Jar打包吗?
- 请教大家,如何使用java实现向导功能,有没有现有的框架?
- 极其伤脑筋的问题 那位好心人帮忙看一下 急急急!在线等待!
- 求教java调用c语法问题,在现线等,非常急
- 关于mybatis只能查询英文,不能查询中文的问题!!!!
- 关于类型转换(int ->char) 怎么编译器不报错阿?
- Java 中,接口中的方法声明成 abstract 和不声明有什么区别?
/**
*
*/
package clientservermodel2;import java.io.*;
import java.net.*;/**
* @author super
*
*/
public class MultiplyServer { /**
* @param args
*/
//public static final int MAX_THREADS = 20;
public static final int PORT= 1995;
public static void main(String[] args) {
// TODO Auto-generated method stub try{
//产生一个ServerSocket
ServerSocket serverSocket = new ServerSocket(PORT);
System.out.println("A server is established..");
try{
//产生一Socket 对象,用它来处理和客户端的交互
//int i=0;
while(true){
Socket s = serverSocket.accept();
ConnectionHandler handler = new ConnectionHandler(s);
}
}
finally{
serverSocket.close();
}
}catch(IOException e){
e.printStackTrace();
}
}}//专门设计一个线程类来处理和客户端的交互
class ConnectionHandler extends Thread{
private Socket handlerSocket ;
private PrintWriter out;
private BufferedReader in;
public ConnectionHandler(Socket s){
handlerSocket = s;
try{
//从这个套接字中分离出输入流和输出流
out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())),true);
in = new BufferedReader(
new InputStreamReader(s.getInputStream()));
}catch(Exception e){
e.printStackTrace();
}
start();//调用RUN 方法
}
public void run(){
System.out.println("Beginning dealing with interaction.....");
try{
//由于这个线程不知道到底处理多少次,所以只能用while形式的循环
while(true){
String str = in.readLine();
//分析读入的内容
if(str.equals("END"))
break;
//否则,加上内容之后返回
System.out.println(str);
out.println("Echo # "+str);
}
}catch(Exception e){
e.printStackTrace(System.err);
}
finally{
//回收这个打开的套接字
try{
handlerSocket.close();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
}
}客户端部分
/**
*
*/
package clientservermodel2;
import java.net.*;
import java.io.*;/**
* @author super
*
*/
public class MultiplyClient { /**
* @param args
*/
//所有的客户端的SOCKET 需要的信息应该在这个大类里面提供
public static final int MAX_THREADS = 19;
public static void main(String[] args) {
// TODO Auto-generated method stub try{
InetAddress addr = InetAddress.getByName(null);
//ClientSocket socket = new ClientSocket(addr,MultiplyServer.PORT);
int i = 0;
while ( i<MAX_THREADS ){
ClientSocket socket = new ClientSocket(addr,MultiplyServer.PORT);
socket.sleep(100);
i++;
}
}catch(Exception e){
e.printStackTrace();
}
}}//专门的一个套接字类来处理和服务器端的连接
class ClientSocket extends Thread{
private BufferedReader in;
private PrintWriter out;
private Socket s;
public ClientSocket(InetAddress addr,int PORT)
{
try{
s = new Socket(addr,PORT);
//分离出输入端和输出端
in = new BufferedReader(
new InputStreamReader(s.getInputStream()));
out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())),true);
//让其调用run
this.start();
// s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void run(){
try{
for(int i=0;i<15;i++){
//输入内容
out.println("Message +# "+i);
//读入返回的内容
String str = in.readLine();
System.out.println(str);
}
out.println("END");
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
s.close();
}catch(IOException e){
System.err.println("Can not close socket of client");
}
}
}
}算是个套接字用法的例子吧,编的比较粗糙,呵呵