zoukankan      html  css  js  c++  java
  • Java Socket 入门1

    由程序逻辑可以看到 这是一个 客户端和服务端一对一聊天的程序  首先由服务端说第一句话然后对话才开始 

    且只能客户端一行话  服务端再一行话 这样往复进行  客户端若想不等服务端回应继续说话是不行的

    服务端

    package rakus;
    
    import java.io.BufferedReader;
    
    import java.io.IOException;
    
    import java.io.InputStream;
    
    import java.io.InputStreamReader;
    
    import java.io.OutputStream;
    
    import java.io.PrintWriter;
    
    import java.net.ServerSocket;
    
    import java.net.Socket;
    public class MyServer {
        public static void main(String[] args) {
            try {
                ServerSocket ss;
                ss = new ServerSocket(8888);
                //wait for client to link then there will be a link between server and client
                Socket sk = ss.accept();
                System.out.println("a connection set up");
                //server has to send msg to client and get msg from client
                InputStream is=sk.getInputStream();
                OutputStream os=sk.getOutputStream();
                //BufferedReader对InputStreamReader作封装 以便于读一行数据
                BufferedReader br=new BufferedReader(new InputStreamReader(is));
                PrintWriter pw=new PrintWriter(os);
                //get msg from console and send
                BufferedReader brConsole=new BufferedReader(new InputStreamReader(System.in));
                String msg=null;
                String str = null;
                while(1==1){
                    //print
                    msg=brConsole.readLine();
                    pw.println  ("server :  "+msg);
                    //注意这里不能使用print  因为对方是使用readLine()来接收数据的 
                    //没有ln的话总是认为一行话没有结束
                    pw.flush();//pw可以使用  new PrintWriter(os.true)来创建  true表示autoFlush//那么就不用我手动Flush了
                    //read str from scoket
                    str = br.readLine();
                    System.out.println(str);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
     

    客户端

    package rakus;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    public class MyClient {
        public static void main(String[] args) {
            try {
                // link server via ip and port
                // InetAddress.getLocalHost() 局域网中得到本机IP地址
                Socket sk = new Socket("127.0.0.1", 8888);
                // inputSteam is used for get msg from server
                // outputStream is for send msg to server
                InputStream is = sk.getInputStream();
                OutputStream os = sk.getOutputStream();
                //BufferedReader往往用来读一行数据    br是用于读网络中的一行数据
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                //pw用于把数据写入到网络中
                PrintWriter pw = new PrintWriter(os);
                //读取控制台的文字
                BufferedReader brConsole = new BufferedReader(new InputStreamReader(
                        System.in));
                // get a msg from server
                String str = null;
                String msg=null;//msg是发往客户端的消息
                while(1==1){
                    //read
                    str = br.readLine();
                    System.out.println(str);
                    // send msg to server
                    msg = brConsole.readLine();
                    pw.println("client : "+msg);
                    pw.flush();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    有关linux查看的命令 及本机yum创建
    linux系统命令1
    手机百度网盘加群方法
    百度网盘保存超限解决办法
    c#委托、泛型委托和匿名方法
    值类型和引用类型的总结
    SQL数据查询语句(一)
    c# Invoke和Begininvoke区别
    c#public、private、protected、internal、protected internal修饰符及访问权限
    C#之打印乘法表
  • 原文地址:https://www.cnblogs.com/cart55free99/p/3370198.html
Copyright © 2011-2022 走看看