JAVA中的scoket簡單用法

客戶端

package client;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

import javax.xml.ws.handler.MessageContext.Scope;

public class Client1 {
    private Scanner sc=new Scanner(System.in);
    private OutputStream out;
    private InputStream in;
    private Socket socket;
    public Client1(){
        try {
            //創(chuàng)建socket對象
            socket = new Socket("127.0.0.1",8888);
            System.out.println("連上服務(wù)器...");
            while(true){
                System.out.println("請輸入:");
                
                out = socket.getOutputStream();
                //輸入
                String next = sc.next();
                
                out.write(next.getBytes());
                
                
                in = socket.getInputStream();
                byte[] b=new byte[1024*1024];
                
                int len = in.read(b);
                
                String string = new String(b, 0, len);
                
                if("bye".equals(string)){
                    break;
                }
                System.out.println("服務(wù)器回復:"+string);
            }
            in.close();
            out.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        Client1 c=new Client1();
    }
}

服務(wù)器端

package server;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server1 {
    
    private Scanner sc=new Scanner(System.in);
    public Server1(){
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服務(wù)器等待連接中.....");
            Socket socket = serverSocket.accept();
            System.out.println("連接成功");
            while(true){
                
                InputStream in = socket.getInputStream();
                
                byte[] b=new byte[1024*1024];
                
                int len = in.read(b);
                
                String id=new String(b,0,len);
                
                System.out.println("客戶端說:"+id);
                
                OutputStream out = socket.getOutputStream();
                
                String next = sc.next();
                out.write(next.getBytes());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        Server1 s=new Server1();
    }
}

多線程的服務(wù)器端

package more.server;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerMore {
    public static void main(String[] args) {
        ServerMore s=new ServerMore();
    }
    public ServerMore(){
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服務(wù)器等待鏈接中.....");
            while(true){
                Socket socket = serverSocket.accept();
                System.out.println("連接成功");
                ServerThread st=new ServerThread(socket);
                new Thread(st).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class ServerThread implements Runnable{

    private Socket socket;
    private InputStream in;
    private OutputStream out;
    public ServerThread(Socket socket){
        this.socket=socket;
    }
    @Override
    public void run() {
        try {
            while(true){
                in = socket.getInputStream();
                byte[] b=new byte[1024];
                int len = in.read(b);
                String msg=new String(b,0,len);
                System.out.println("客戶端發(fā)送過來的消息為:\t"+msg);
                if("bye".equals(msg)){
                    break;
                }
                out=socket.getOutputStream();
                out.write("我是服務(wù)器".getBytes());
            }
            in.close();
            out.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容