java控制台实现QQ聊天程序
2014-06-02 23:12
656 查看
1、新建一个类,名为 Server (服务器)
在Server类中编写如下代码:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
//设置server端的连接
ServerSocket s = new ServerSocket(8888);
Socket s1 = s.accept();//server等待连接
//实例化输出流
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//实例化输入流
InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);
//实例化两个线程的对象
Thread msr = new MyServerReader(dis);
Thread msw = new MyServerWriter(dos);
//启动线程
msr.start();
msw.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//创建一个线程用来进行接收读取数据
class MyServerReader extends Thread{
private DataInputStream dis;
public MyServerReader( DataInputStream dis ){
this.dis = dis;
}
public void run(){
String msg;
try{
while(true){
msg = dis.readUTF();
System.out.println( "小孔客户端: " + msg );
if( msg.equals("bye")){
System.out.println( "小孔客户端下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//创建一个线程用来写入并发送数据
class MyServerWriter extends Thread{
private DataOutputStream dos;
public MyServerWriter( DataOutputStream dos){
this.dos = dos;
}
public void run(){
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String msg;
try{
while(true){
msg = br.readLine();
dos.writeUTF(msg);
if(msg.equals("bye")){
System.out.println( "自己下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
2、再新建一个类,名为Client (客户端)
在Client类中编写如下代码:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
//连接server端
Socket s1 = new Socket("localhost",8888);
//实例化输入流
InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);
//实例化输出流
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//实例化两个线程
Thread mcr = new MyClientReader(dis);
Thread mcw = new MyClientWriter(dos);
mcr.start();
mcw.start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//创建一个线程,用来接收读取数据
class MyClientReader extends Thread{
private DataInputStream dis;
public MyClientReader(DataInputStream dis){
this.dis = dis;
}
public void run(){
String msg;
try{
while(true){
msg = dis.readUTF();
System.out.println( "小孔服务器: " + msg );
if( msg.equals("bye")){
System.out.println( "小孔服务器下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//创建一个线程,用来写入并发送数据
class M
4000
yClientWriter extends Thread{
private DataOutputStream dos;
public MyClientWriter( DataOutputStream dos){
this.dos = dos;
}
public void run(){
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String msg;
try{
while(true){
msg = br.readLine();
dos.writeUTF(msg);
if(msg.equals("bye")){
System.out.println( "自己下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
3、此时代码部分已经编写完。先运行Server,再运行Client,在两个控制台中分别输入信息,即可畅享QQ聊天。
在Server类中编写如下代码:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
//设置server端的连接
ServerSocket s = new ServerSocket(8888);
Socket s1 = s.accept();//server等待连接
//实例化输出流
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//实例化输入流
InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);
//实例化两个线程的对象
Thread msr = new MyServerReader(dis);
Thread msw = new MyServerWriter(dos);
//启动线程
msr.start();
msw.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//创建一个线程用来进行接收读取数据
class MyServerReader extends Thread{
private DataInputStream dis;
public MyServerReader( DataInputStream dis ){
this.dis = dis;
}
public void run(){
String msg;
try{
while(true){
msg = dis.readUTF();
System.out.println( "小孔客户端: " + msg );
if( msg.equals("bye")){
System.out.println( "小孔客户端下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//创建一个线程用来写入并发送数据
class MyServerWriter extends Thread{
private DataOutputStream dos;
public MyServerWriter( DataOutputStream dos){
this.dos = dos;
}
public void run(){
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String msg;
try{
while(true){
msg = br.readLine();
dos.writeUTF(msg);
if(msg.equals("bye")){
System.out.println( "自己下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
2、再新建一个类,名为Client (客户端)
在Client类中编写如下代码:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
//连接server端
Socket s1 = new Socket("localhost",8888);
//实例化输入流
InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);
//实例化输出流
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//实例化两个线程
Thread mcr = new MyClientReader(dis);
Thread mcw = new MyClientWriter(dos);
mcr.start();
mcw.start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//创建一个线程,用来接收读取数据
class MyClientReader extends Thread{
private DataInputStream dis;
public MyClientReader(DataInputStream dis){
this.dis = dis;
}
public void run(){
String msg;
try{
while(true){
msg = dis.readUTF();
System.out.println( "小孔服务器: " + msg );
if( msg.equals("bye")){
System.out.println( "小孔服务器下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//创建一个线程,用来写入并发送数据
class M
4000
yClientWriter extends Thread{
private DataOutputStream dos;
public MyClientWriter( DataOutputStream dos){
this.dos = dos;
}
public void run(){
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String msg;
try{
while(true){
msg = br.readLine();
dos.writeUTF(msg);
if(msg.equals("bye")){
System.out.println( "自己下线,程序退出!" );
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
3、此时代码部分已经编写完。先运行Server,再运行Client,在两个控制台中分别输入信息,即可畅享QQ聊天。
相关文章推荐
- Java_GUI创建单机版QQ聊天小程序并实现简单的小功能(附所有源码)
- java网络编程实现一个聊天程序
- 在控制台(cmd)运行java程序,实现增,删,改,查功能
- Java实现多个客户端聊天程序
- 利用java中的Socket实现私聊和公聊的聊天工具,控制台版本的。
- 基于Socket的java网络编程(实现类似于QQ两人聊天的交互)
- 实现java程序的自动休眠 类似QQ的自动离线
- java网络编程实现一个聊天程序
- Java之Socket简单聊天实现(QQ续二)
- Java实现多个客户端聊天程序
- java实现仿qq聊天
- [Java] Socket/ServerSocket 控制台简单聊天程序
- C#仿QQ聊天程序v1.0(IConnectionList接口实现)[易学网]
- java实现的聊天程序
- Java实现多个客户端聊天程序
- JAVA实现计算器控制台程序
- 仿QQ聊天程序(java)
- Java登陆3GQQ以及获取好友信息与好友聊天的简单实现
- java结合NIO实现的聊天程序
- java实现的多人聊天(控制台输入)