Java网络编程的socket使用(简单的服务器客户端实现)
发布日期:2021-06-29 11:14:24 浏览次数:2 分类:技术文章

本文共 5342 字,大约阅读时间需要 17 分钟。

import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class Server extends Thread {	//创建一个ServerSocket,用于监听客户端Socket连接请求	ServerSocket server = null;	Socket socket = null;	public Server(int port) {		try {			server = new ServerSocket(port);		} catch (IOException e) {			e.printStackTrace();		}	}	public void run() {		super.run();				try {			System.out.println("wait client connect...");			//侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞			socket = server.accept();						new sendMessThread().start();						System.out.println(socket.getInetAddress().getHostAddress()+"SUCCESS TO CONNECT...");			InputStream in = socket.getInputStream();			int len = 0;			byte[] buf = new byte[1024];			while ((len = in.read(buf)) != -1) {				System.out.println("client saying: " + new String(buf, 0, len));			}					} catch (IOException e) {			e.printStackTrace();		}					}	class sendMessThread extends Thread {		public void run() {			super.run();			Scanner scanner = null;			OutputStream out = null;			try {				if (socket != null) {					scanner = new Scanner(System.in);					out = socket.getOutputStream();					String in = "";					do {						in = scanner.next();						out.write(("server saying: " + in).getBytes());						out.flush();					}while (!in.equals("q"));				}			} catch (IOException e) {				e.printStackTrace();			}		}	}	public static void main(String[] args) {		Server server = new Server(1234);		server.start();	}}
package Test;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class Client extends Thread {    //定义一个Socket对象    Socket socket = null;    public Client(String host, int port) {        try {            //需要服务器的IP地址和端口号,才能获得正确的Socket对象            socket = new Socket(host, port);        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }    public void run() {        //客户端一连接就可以写数据个服务器了        new sendMessThread().start();        super.run();        try {            // 读Sock里面的数据            InputStream s = socket.getInputStream();            byte[] buf = new byte[1024];            int len = 0;            while ((len = s.read(buf)) != -1) {                System.out.println(new String(buf, 0, len));            }        } catch (IOException e) {            e.printStackTrace();        }    }    //往Socket里面写数据,需要新开一个线程    class sendMessThread extends Thread{        public void run() {            super.run();            //写操作            Scanner scanner = null;            OutputStream os = null;            try {                scanner = new Scanner(System.in);                os = socket.getOutputStream();                String in = "";                do {                    in = scanner.next();                    os.write(("" + in).getBytes());                    os.flush();                } while (!in.equals("bye"));            } catch (IOException e) {                e.printStackTrace();            }            scanner.close();            try {                os.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }        public static void main(String[] args) {        //需要服务器的正确的IP地址和端口号        Client clientTest = new Client("127.0.0.1", 1234);        clientTest.start();    }}
简化版服务端import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server {    public static void main(String[] args) throws IOException {            ServerSocket server = new ServerSocket(9050);            System.out.println("waiting...");          //等待client的请求            Socket socket = server.accept();            while (true) {                                // 接收客户端的数据                DataInputStream in = new DataInputStream(socket.getInputStream());                String string = in.readUTF();                System.out.println("client:" + string);                // 发送给客户端数据                DataOutputStream out = new DataOutputStream(socket.getOutputStream());                out.writeUTF("hi,i am hserver!i say:" + string);                            }    }}客户端import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class Client {    public static void main(String[] args) throws UnknownHostException, IOException {    	Socket socket = new Socket("localhost", 9050);        while (true) {            try {            	                System.out.println("please input...");                Scanner scanner = new Scanner(System.in);                String p = scanner.nextLine();                // 发送给服务器的数据                DataOutputStream out = new DataOutputStream(socket.getOutputStream());                out.writeUTF(p);                // 接收服务器的返回数据                DataInputStream in = new DataInputStream(socket.getInputStream());                System.out.println("server:" + in.readUTF());                            } catch (Exception e) {            	socket.close();                e.printStackTrace();            }        }    }}

转载地址:https://blog.csdn.net/ZWHSOUL/article/details/82911574 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:简单的聊天程序(java的socket+多线程)
下一篇:案列:指针的指针

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月05日 15时02分41秒