黑马程序员技术交流社区
标题:
多线程实现点对点聊天
[打印本页]
作者:
Aaron9527
时间:
2016-6-8 23:58
标题:
多线程实现点对点聊天
package cn.itcast.点对点实现多线程聊天;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
Socket socket = new Socket("127.0.0.1",8888);
System.out.println("欢迎登陆熊熊客户端,祝您聊的开心!");
OutputStream out = socket.getOutputStream();
new ClientThread(socket).start();
//InputStream intput = socket.getInputStream();
// byte [] byteArray = new byte[1024];//不必每次都创建一个长度为1024的数组,
//它是不断的读取写入,所以只需要一个就够了
// int len = 0;
while(true){
System.out.println("键盘轻点,距离不再遥远,对服务器说点什么吧!");
String str = sc.next();
out.write(str.getBytes());
if(str.equals("over")){
break;
}
// len = intput.read(byteArray);
// str = new String(byteArray,0,len);
// System.out.println("服务器悄悄对你说:"+"\r\n"+str);
}
System.out.println("客户端结束,下次要记得熊熊噢~");
System.exit(0);
socket.close();
}
}
package cn.itcast.点对点实现多线程聊天;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
System.out.println("欢迎登陆熊熊服务器,祝您聊的开心~");
// InputStream input = socker.getInputStream();
OutputStream output = socket.getOutputStream();
new ServerThread(socket).start();
// byte [] byteArray = new byte[1024];
// int len =0;
while(true){
//读取从客户端来的数据
// len=input.read(byteArray);
// String str = new String(byteArray,0,len);
// System.out.println("客户端悄悄对你说"+"\r\n"+str);
System.out.println("键盘轻点,距离不再遥远,对客户端说点什么吧!");
String str =sc.next();
output.write(str.getBytes());
if(str.equals("over")){
break;
}
}
System.out.println("客户端结束,下次要记得熊熊噢~");
System.exit(0);
socket.close();
server.close();
}
}
package cn.itcast.点对点实现多线程聊天;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/*
* 客户端线程:
* 主要职责:从网络接收数据
* */
public class ClientThread extends Thread {
// 我需要接收数据,就需要Socket,这里得想办法搞出一个Socket对象
private Socket socket;
public ClientThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
InputStream input = socket.getInputStream();
int len = 0;
byte[] byteArray = new byte[1024];
while (true) {
len = input.read(byteArray);
String str = new String(byteArray, 0, len);
System.out.println("有来自服务端的新消息:" + "\r\n" + str);
if (str.equals("over")) {
System.out.println("客户端结束,下次要记得熊熊噢~");
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.itcast.点对点实现多线程聊天;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/*
* 服务端:接收数据
* */
public class ServerThread extends Thread{
private Socket socket;
public ServerThread(Socket socket){
this.socket=socket;
}
public void run(){
try {
InputStream input = socket.getInputStream();
int len =0;
byte [] byteArray = new byte[1024];
while(true){
len = input.read(byteArray);
String str = new String(byteArray,0,len);
System.out.println("有来自客户端的新消息:" + "\r\n" + str);
if(str.equals("over")){
System.out.println("客户端结束,下次要记得熊熊噢~");
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2