java学习之路――基于TCP的Socket网络通信实例(二)

2014-11-24 03:02:54 · 作者: · 浏览: 1
this.socket = socket;

}

@Override

public void run() {

while(true){

try {

//从socket中得到输出流对象

OutputStream os = socket.getOutputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String line = br.readLine();

os.write(line.getBytes());

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

3:建立主客户端类

package com.lcq.network;

/**

*

* 类名:MainClient

* 功能:建立主客户端类,接受服务器端的信息并显示,与服务器端进行交互

* 时间:

* 作者:lcq

* 版本:

*

*/

import java.net.Socket;

public class MainClient {

/**

* @param args

* @throws Exception

*/

public static void main(String[] args) throws Exception {

Socket socket = new Socket("127.0.0.1", 4000);

new ClientInputThread(socket).start();

new ClientOutputThread(socket).start();

}

}

4:建立主客户端的两个线程(包括向服务器端输入和输出)

package com.lcq.network;

/**

*

* 类名:ClientInputThread

* 功能:建立主客户端的输入线程类,接收服务器端的信息后打印出来

* 时间:

* 作者:lcq

* 版本:

*

*/

import java.io.IOException;

import java.io.InputStream;

import java.net.Socket;

public class ClientInputThread extends Thread{

private Socket socket;

public ClientInputThread(Socket socket){

this.socket = socket;

}

@Override

public void run() {

while(true){

try {

//建立输入流

InputStream is = socket.getInputStream();

byte[] by = new byte[1024];

//将输入流里的字节读到字节数组里,并返回读的字节数

int length = is.read(by);

//将字节数组里的length个字节转换为字符串

String str = new String(by,0,length);

//打印出字符串

System.out.println(str);

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

package com.lcq.network;

/**

*

* 类名:ClientOutputThread

* 功能:建立主客户端的输出线程类, 向服务器端传送信息

* 时间:

* 作者:lcq

* 版本:

*

*/

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.Socket;

public class ClientOutputThread extends Thread{

Socket socket = new Socket();

public ClientOutputThread(Socket socket){

this.socket = socket;

}

@Override

public void run() {

while(true){

try {

OutputStream os = socket.getOutputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String line = br.readLine();

os.write(line.getBytes());

} catch (IO