java网络信息传输系统

java编程案例

client

import java.io.*;

import java.net.InetAddress;

import java.net.Socket;

import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class Client {
    public  int ServerPort;
    Socket socket;

    public Client(int serverPort) throws IOException {
        this.ServerPort = serverPort;
        socket=new Socket(InetAddress.getLocalHost(),ServerPort);
    }

    //接收服务器传来的消息.因为要一直接收所以要一直等着

    public void receive() {

            try {
                //获取输入流
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
                //接收数据
                String str=in.readLine();
                System.out.println("服务器说:"+str);

            } catch (IOException e) {
                e.printStackTrace();
            }


    }




    //给服务器发消息
    public  void send() throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"));
        Scanner scanner=new Scanner(System.in);
        String sendInfo=scanner.nextLine();
        bw.write(sendInfo);
        bw.newLine();
        bw.flush();


    }


}

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

public class ClientDemo {
    public static void main(String[] args) throws IOException {
        Client client1=new Client(1001);
        client1.send();
        while(true)
            client1.receive();

    }


}

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Scanner;

public class ServerListen implements Runnable{
    int port;

    ServerListen(int port)
    {
        this.port=port;
    }
    @Override
    public void run() {
        //监听端口号
        try {
            //1.定义一个服务器套接字
            ServerSocket listener=new ServerSocket(port);
            //2.用一个socket来接收服务器收到的用户传过来的信息
            //客户端没发消息的时候阻塞,有消息的时候就进入运行态
            Socket socket=listener.accept();
            //3.获取输入输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
            //接收消息
            String data=in.readLine();
            String clientHost=socket.getLocalAddress().toString();
            String clientPort=Integer.toString(socket.getPort()) ;
            System.out.println(clientHost+":"+socket.getPort()+" connecting to port "+port);//返回socket对象与服务器连接的端口号
            System.out.println("and send:"+data);

            //4.告诉客户端已经收到
            ServerSend(clientPort,socket);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    public void ServerSend(String clientPort, Socket socket) throws IOException {
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8));
        //发送消息
        Scanner scanner=new Scanner(System.in);
        String sendInfo=scanner.nextLine();
        out.write(Arrays.toString(clientPort.getBytes(StandardCharsets.UTF_8)) +":"+sendInfo);
        out.newLine();
        out.flush();
    }



}

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class Server {
    //用多线程监听每一个用户(其实是用户注册就增加一个监听)
    public static void main(String[] args) {
        //创建一个监听器监听1001,1002,1003端口
            ServerListen serverListen=new ServerListen(1001);
            ServerListen serverListen2=new ServerListen(1002);
            ServerListen serverListen3=new ServerListen(1003);
            Thread thread=new Thread(serverListen);
            Thread thread2=new Thread(serverListen2);
            Thread thread3=new Thread(serverListen3);
            thread.start();
            thread2.start();
            thread3.start();
    }

    //用某个端口号给某个套接字发信息
    public void ServerSend(String clientPort, Socket socket) throws IOException {
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8));
        //发送消息
        out.write(Arrays.toString(clientPort.getBytes(StandardCharsets.UTF_8)) +":"+" hello");
        out.newLine();
        out.flush();
    }


}


版权声明:本文为timoraty原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。