长沙北大青鸟大计教育
在线测试

java关于多线程的部分操作

发布时间:2013-04-27

一般服务器端代码,每次收到一个线程,一个client就会产生:

/************************ 开始监听 **************************/

int port = 4311;

ServerSocket server = null;//服务器

Socket client = null;//客户端

try {

server = new ServerSocket(port);

} catch (IndirectionException e1) {

System.out.println(“正在监听。..”);

}

while(true)

{

System.out.println(“等待客户”+i);

i++;

try {

client = server.accept();//开始监听线程,接收到client

System.out.println(“客户地址:” + client.getInetAddress());

} catch (IOException e1) {

System.out.println(“正在等待客户”);

}

}

客户端代码,启动之后便会连接服务器,得到回应之后便会形成socket连接

Socket clientsocket = null;

try {

clientsocket = new Socket(“localhost”,4311);

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

-

socket的输入和输出一般用流来相互写。

in.read()和out.write(),

in.readObject()和out.writeObject(object)。

客户端的一个线程里面同时new了多个ObjectOutputStream流是不允许的,其它的流可以。ObjectOutputStream有锁机制。

如果是一般的输入和输出流的话用:

DateOutputStream out = null;

DateInputStream in = null;

//获得输入输出流

try {

out=new DateOutputStream(socket.getOutputStream());

in=new DateInputStream(socket.getInputStream());

} catch (IOException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

如果是对象上的输入和输出的话用:

ObjectOutputStream out = null;

ObjectInputStream in = null;

//获得输入输出流

try {

out=new ObjectOutputStream(socket.getOutputStream());

in=new ObjectInputStream(socket.getInputStream());

} catch (IOException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

如果复杂之后,可以是服务器启动之后对每个客户端启动一个线程与客户端的线程进行交互。

在线申请

北大青鸟免费试听课程

 我已同意《隐私政策说明》
马上申请

学校地址: 长沙市天心区团结路6号

报名热线: 4008-0731-86 / 0731-82186801

Copyright © 2006 北大青鸟长沙大计教育
长沙市岳麓区大计职业技能培训学校有限公司版权所有

湘ICP备14017520号-3