网络编程和多线程编辑==值得一看哦

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

猜你喜欢

转载自blog.csdn.net/weixin_42321963/article/details/80957469