1:通信实例socket和serversocket:只能发送一次:
MyServer首先启动,myClient其次启动,敲代码时注意其中所发送信息的\n,
这个代表一行的结束,有了它,readline()才起作用。
package fabiao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(0617);
System.out.println("服务器正在等待连接:");
Socket socket = ss.accept();
System.out.println("服务器连接成功");
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = br.readLine();
System.out.println(s);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("您好,欢迎您连接成功,你发送的消息我已经收到了,现在您可以做您想做的事了\n");
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
服务器正在等待连接:
服务器连接成功
客户端:我已经发送请求了,您收到了吗?
package fabiao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
public class MyClient {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
String host = address.getHostAddress();
Socket socket = new Socket(host, 0617);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("客户端:我已经发送请求了,您收到了吗?\n");
bw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = br.readLine();
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
您好,欢迎您连接成功,你发送的消息我已经收到了,现在您可以做您想做的事了
2:通信实例socket和serversocket:能互相通话,但必须一问一答:
package fabiao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class MyServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(0617);
System.out.println("服务器正在等待连接:");
Socket socket = ss.accept();
System.out.println("服务器连接成功");
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String sw="";
String sr="";
while (true) {
sr = br.readLine();
System.out.println(sr);
sw=(new Scanner(System.in)).next();
bw.write("服务端:"+sw+"\n");
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
服务器正在等待连接:
服务器连接成功
客户端:HellO
Hello
客户端:终于连上了
是的,欢迎你的到来
客户端:哈哈
实验就这样吧
客户端:嗯嗯
bye
客户端:bye
package fabiao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;
public class MyClient {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
String host = address.getHostAddress();
Socket socket = new Socket(host, 0617);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String sw="";
String sr="";
System.out.println("请先说话:");
while (true) {
sw=(new Scanner(System.in)).next();
bw.write("客户端:"+sw+"\n");
bw.flush();
sr = br.readLine();
System.out.println(sr);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
请先说话:
HellO
服务端:Hello
终于连上了
服务端:是的,欢迎你的到来
哈哈
服务端:实验就这样吧
嗯嗯
服务端:bye
bye
3:通信实例socket和serversocket:模拟两人实时对话
两个辅助类:
package fabiao;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
public class Reader implements Runnable{
private Socket socket;
public Reader(Socket socket) {
this.socket = socket;
}
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String sr = "";
while (true) {
sr=br.readLine();
System.out.println(sr+"\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package fabiao;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class Writer implements Runnable {
private Socket socket;
private String name;
public Writer(Socket socket, String name) {
this.socket = socket;
this.name = name;
}
public void run() {
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String sw = "";
while (true) {
sw = (new Scanner(System.in)).next();
bw.write(name+":"+sw + "\n");
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package fabiao;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(0617);
System.out.println("服务器正在等待连接:");
Socket socket = ss.accept();
System.out.println("服务器连接成功");
Reader r=new Reader(socket);
Writer w=new Writer(socket,"服务器");
Thread tr=new Thread(r);
Thread tw=new Thread(w);
tr.start();
tw.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
服务器正在等待连接:
服务器连接成功
客户端:Hello
客户端:你好啊
客户端:我是客户端
客户端:你能收到我的信息吗?
你好,客户端,我是服务器
我能收到你的信息,你不用担心
很高兴咱俩呢能够测试成功
客户端:哈哈,我也是
客户端:就这样,bye
bye
package fabiao;
import java.net.InetAddress;
import java.net.Socket;
public class MyClient {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
String host = address.getHostAddress();
Socket socket = new Socket(host, 0617);
Reader r=new Reader(socket);
Writer w=new Writer(socket,"客户端");
Thread tr=new Thread(r);
Thread tw=new Thread(w);
tr.start();
tw.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
Hello
你好啊
我是客户端
你能收到我的信息吗?
服务器:你好,客户端,我是服务器
服务器:我能收到你的信息,你不用担心
服务器:很高兴咱俩呢能够测试成功
哈哈,我也是
就这样,bye
服务器:bye