QQServer 服务器端
QQServer.java
package com.net;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author 鲁志明 E-mail: 13688601037@139.com
* @version 创建时间:2013-5-25 下午8:25:15
*
*/
public class QQServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8000);
// 服务器一直接收socket的连接,一旦有socket连接,就会产生一个新的线程和端口来运行这个新的socket
while(true)
{
Socket socket = server.accept();
new InputStreamThread(socket).start();
new OutputStreamThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
QQClient 客户端
QQClient.java
package com.net;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* @author 鲁志明 E-mail: 13688601037@139.com
* @version 创建时间:2013-5-25 下午8:25:33
*
*/
public class QQClient {
public static void main(String[] args) {
try {
Socket client = new Socket("127.0.0.1",8000);
new InputStreamThread(client).start();
new OutputStreamThread(client).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
InputStreamThread输入流线程
InputStreamThread.java
package com.net;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/**
* @author 鲁志明 E-mail: 13688601037@139.com
* @version 创建时间:2013-5-25 下午8:26:05
*
*/
public class InputStreamThread extends Thread{
private Socket socket;
public InputStreamThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
InputStream is = socket.getInputStream();
byte[] message = new byte[1024];
int messageLength = 0;
while(-1 != (messageLength = is.read(message, 0, message.length)))
{
System.out.println(new String(message,0,messageLength));
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
OutputStreamThread输出流线程
package com.net;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* @author 鲁志明 E-mail: 13688601037@139.com
* @version 创建时间:2013-5-25 下午8:26:42
*
*/
public class OutputStreamThread extends Thread{
private Socket socket;
public OutputStreamThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
OutputStream os = socket.getOutputStream();
InputStream is = System.in;
byte[] message = new byte[1024];
int messageLength = 0;
while(-1 != (messageLength = is.read(message, 0, message.length)))
{
os.write(message, 0, messageLength);
}
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
程序当中有什么写的不好的地方,忘大家指出。
共同进步!