利用多线程与网络编程编写的实时聊天小程序
2017-09-01 22:09
477 查看
客户端代码:
package Oracle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ClientThread {
static Socket socket = null;
public static void main(String[] args) throws Exception {
socket = new Socket("192.168.3.59", 10002);
System.out.println("客户端已启动...");
ClientSent cs = new ClientSent();
Thread t1 = new Thread(cs);
t1.start();
ClientReceive cr = new ClientReceive();
Thread t2 = new Thread(cr);
t2.start();
}
}
class ClientSent extends ClientThread implements Runnable {
public void run() {
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps;
try {
ps = new PrintStream(socket.getOutputStream(), true);
String str = null;
str = br.readLine();
ps.println(str);
if ("exit".equals(str)) {
System.out.println("已退出");
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class ClientReceive extends ClientThread implements Runnable {
public void run() {
while (true) {
BufferedReader br2;
try {
br2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str2 = null;
str2 = br2.readLine();
if ("exit".equals(str2)) {
System.out.println("对方退出聊天");
System.exit(-1);
}
System.out.println(socket.getInetAddress().getHostName() + "说:" + str2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端代码:
package Oracle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerThread {
static ServerSocket ss;
static Socket s;
public static void main(String[] args) throws IOException {
ss = new ServerSocket(10002);
System.out.println("服务端已启动...");
s = ss.accept();
String name = s.getInetAddress().getHostName();
System.out.println(name + ":已连接");
ServerSend ss = new ServerSend();
Thread t1 = new Thread(ss);
t1.start();
ServerReceive sr = new ServerReceive();
Thread t2 = new Thread(sr);
t2.start();
}
}
class ServerSend extends ServerThread implements Runnable {
public void run() {
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps;
try {
ps = new PrintStream(s.getOutputStream(), true);
String str = null;
str = br.readLine();
ps.println(str);
if ("exit".equals(str)) {
System.out.println("已退出");
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class ServerReceive extends ServerThread implements Runnable {
public void run() {
while (true) {
try {
BufferedReader br2 = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str2 = null;
str2 = br2.readLine();
System.out.println(s.getInetAddress().getHostName() + "说:" + str2);
if ("exit".equals(str2)) {
System.out.println("对方退出聊天");
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package Oracle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ClientThread {
static Socket socket = null;
public static void main(String[] args) throws Exception {
socket = new Socket("192.168.3.59", 10002);
System.out.println("客户端已启动...");
ClientSent cs = new ClientSent();
Thread t1 = new Thread(cs);
t1.start();
ClientReceive cr = new ClientReceive();
Thread t2 = new Thread(cr);
t2.start();
}
}
class ClientSent extends ClientThread implements Runnable {
public void run() {
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps;
try {
ps = new PrintStream(socket.getOutputStream(), true);
String str = null;
str = br.readLine();
ps.println(str);
if ("exit".equals(str)) {
System.out.println("已退出");
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class ClientReceive extends ClientThread implements Runnable {
public void run() {
while (true) {
BufferedReader br2;
try {
br2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str2 = null;
str2 = br2.readLine();
if ("exit".equals(str2)) {
System.out.println("对方退出聊天");
System.exit(-1);
}
System.out.println(socket.getInetAddress().getHostName() + "说:" + str2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端代码:
package Oracle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerThread {
static ServerSocket ss;
static Socket s;
public static void main(String[] args) throws IOException {
ss = new ServerSocket(10002);
System.out.println("服务端已启动...");
s = ss.accept();
String name = s.getInetAddress().getHostName();
System.out.println(name + ":已连接");
ServerSend ss = new ServerSend();
Thread t1 = new Thread(ss);
t1.start();
ServerReceive sr = new ServerReceive();
Thread t2 = new Thread(sr);
t2.start();
}
}
class ServerSend extends ServerThread implements Runnable {
public void run() {
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps;
try {
ps = new PrintStream(s.getOutputStream(), true);
String str = null;
str = br.readLine();
ps.println(str);
if ("exit".equals(str)) {
System.out.println("已退出");
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class ServerReceive extends ServerThread implements Runnable {
public void run() {
while (true) {
try {
BufferedReader br2 = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str2 = null;
str2 = br2.readLine();
System.out.println(s.getInetAddress().getHostName() + "说:" + str2);
if ("exit".equals(str2)) {
System.out.println("对方退出聊天");
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
相关文章推荐
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序
- 利用python编写设计多线程web服务器(计算机网络_自顶向下第六版_第二章1和4的编程作业)
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- Java Socket 编程——多线程网络聊天程序
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- 利用C#编写的网络聊天程序
- java学习之利用UDP编写网络聊天程序
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- 实现记录和查看用户的系统登录和退出历史和利用C#编写的网络聊天程序
- Java Socket 编程——多线程网络聊天程序
- java编程_socket_套接字_网络编程_简易的GUI多线程聊天程序
- 多线程socket编程--聊天程序
- vc socket 多线程 (记录一次自己调用window 底层API编写 vc socket 多线程的服务器网络程序)
- 黑马程序员_Java基础_网络编程_UDP传输协议编程,控制台聊天程序
- Socket网络编程--聊天程序(2)
- Socket网络编程--聊天程序(4)
- linux------tcp---------Linux网络编程一步一步学-异步通讯聊天程序select
- 网络编程(38)—— 利用互斥mutex控制多线程对临界区的访问
- 利用RFC868协议编写网络对时程序
- 模拟QQ聊天程序_服务器端_网络编程