网络编程(用到了i0流的知识)(2客户端)

网络最简单的echo回声(客户端发消息,服务端回复)

客户端:

package test;


import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;


public class HelloClient {
public static void main(String[] args) throws IOException {


// 连接到本机的8788端口
Socket s = new Socket("127.0.0.1", 8788);
InputStream is = s.getInputStream();                        //定义好输入流,用来接收消息
DataInputStream dis = new DataInputStream(is);    //变为dataInputStream类型
System.out.println(dis.readUTF());                             //接收第一个消息


OutputStream os = s.getOutputStream();                            //定义输入流
DataOutputStream dos = new DataOutputStream(os);
while (true) {                                                                            //开始循环,自己输入,然后等待服务器接收并回应
Scanner sca = new Scanner(System.in);                            //从键盘获取数据
String str;
str = sca.next();


if (str != null) {


dos.writeUTF(str);                                                          //发送给服务端消息


System.out.println("传来回音:" + dis.readUTF());           //接收服务端传来的消息


} else {
break;
}
}


}

}



服务端


package test;


import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;


public class HelloServer {
public static void main(String[] args) throws IOException {
 
// InputStream is=new FileInputStream("");
// ObjectInputStream ois=new ObjectInputStream(is);
// DataInputStream dis=new DataInputStream(is);

            //服务端打开端口8888
            ServerSocket ss = new ServerSocket(8788);
               
            //在8888端口上监听,看是否有连接请求过来
            System.out.println("在8788端口上监听");
          Socket s=ss.accept();
          
          System.out.println("有接入的客户:"+s);
          
          OutputStream os=s.getOutputStream();                                    //在客户端为发消息之前先发给客户端一句话
          DataOutputStream dos=new DataOutputStream(os);
          String str="echo回音";
          dos.writeUTF(str);
          
          InputStream is=s.getInputStream();                                            //定义输入流,接收客户端的消息
          DataInputStream dis=new DataInputStream(is);
          
          boolean b=true;
          while(b){
          String str1=dis.readUTF();
          if(str1.equals("bye")){                                                            //判断接受到的消息是bye那么立即结束回声
          System.out.println("结束");
          b=false;
          }else if(str1==null){
          System.out.println("空值");
          b=false;
          }else{
          System.out.println(str1);                                                           //否则给客户端发送相同消息
          
          dos.writeUTF(str1);}
          
          }
          
          dos.close();
          os.close();
          dis.close();
          is.close();
          s.close();
          ss.close();
          
          
          
          
}

}



总结:不积跬步无以至千里,这个就是最简单客户端和服务端通讯,从这还可以演化有消息机器人等,连接数据库之后队传来的消息进行判断然后从数据库里面调取answer进行回应。



ps:知道的事情越多,越感觉自己知道的太少。时间等的越长,越觉得不可能,我有一个想买的东西,就一直攒钱当我感觉够了,在一看那个东西又贵了,我又攒钱,发现更贵了。我就怕有一天我在垃圾桶看见这个东西的时候还是忍不住捡起来。我很慌啊,我变成熟的速度没有你变优秀的速度快。总想几天就赶上你一年的成长,哎~我真的很想你啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值