初学Java,代码很多不足,应该还有更好的写法,拿出来跟大家分享下。客户端代码:
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();
}
}
}
}
解决方案 »
- 求助哈
- 一个非常简单的数据库程序,为什么 .next() 方法走到倒数第二行就不再继续走了?
- 内部类做监听器的问题<anonymous myframe$1> is not abstract and does not override abstract method actionPerformed
- 郁闷一天了,请高手指点``
- 怎么能让一个画面(比如JFRAME)刚运行的时候,位于屏幕的正中间?
- jb2005不支持html属性
- 100分求乱码的问题,很急,请大家帮忙
- 如何实现4位数组合的算法(要求不重复)
- autoexec.bat和classpath的疑惑
- 哪里有Java SDK中文文档手册啊?
- 请问JAVA中Socket的I/O流的创建有顺序要求吗?
- 自学JAVA 坦克大战第一步就被卡住了 前辈们求指教
你自己可以理解这些代码吗?如果可以完全理解并融会贯通,就可以从初级程序员晋级到中级JAVA程序员了。
加油。