Socket中的面向连接

来源:互联网 发布:手机淘宝招牌尺寸 编辑:程序博客网 时间:2024/06/06 08:41

课堂练习的小程序之人机对话,保存在此~~~

 

服务器:

package jiqiren;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

public class Server {
 public static void main(String args[]) {
  Map userMap = new HashMap();
  userMap.put("你好", "你也好");
  userMap.put("你吃早饭了吗?", "我吃过了,你呢?");
  userMap.put("我没有吃呢", "那我请你吃吧");
  userMap.put("好啊", "你吃什么呢?");
  userMap.put("我吃鸡蛋", "就吃这么点啊");
  userMap.put("我减肥呢", "哈哈");
  boolean f = false;
     InputStream is = null; OutputStream os = null;
  try {  
   ServerSocket s = new ServerSocket(8888);
   System.out.println("服务器开始运行!!!");
   while (true) {
    Socket s1 = s.accept(); 
    is = s1.getInputStream();
    os = s1.getOutputStream();
    DataInputStream dis = new DataInputStream(is);
    DataOutputStream dos = new DataOutputStream(os);
    
    //自定义代码
    do{
     String talk = dis.readUTF();
     dos.writeUTF("机器人说:" + userMap.get(talk) );
    }while(!f);
    
    
    //****
    
    dos.close();
    s1.close();
   }
  }catch (IOException e) {
   e.printStackTrace();
   System.out.println("程序运行出错:" + e);   
  }
 }

}

 

 

 

客户

package jiqiren;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.Socket;
import java.util.Scanner;

public class Client {
 
 public static void main(String args[]) {
  String f = "y";
  String re;
     InputStream is = null;
     OutputStream os = null;
     Scanner sc = new Scanner(System.in);
  try {
     Socket socket = new Socket("127.0.0.1", 8888);//开启
     is = socket.getInputStream();
        os = socket.getOutputStream();
        DataInputStream dis = new DataInputStream(is);
        DataOutputStream dos = new DataOutputStream(os);
       
        //自定义代码
        do{
         System.out.print("我说:");
         String ss = sc.next();
         dos.writeUTF(ss);
         String s = dis.readUTF();
       
         if(s!=null);
          {
           System.out.println(s);
           System.out.println("还要继续交谈吗?(y/n)");
            re = sc.next();
          }
          
        }while(f.equals(re));
       
       
        //******* 
         
        dos.close();
        dis.close();
        socket.close();
  } catch (ConnectException connExc) {
   connExc.printStackTrace();
   System.err.println("服务器连接失败!");
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

 

原创粉丝点击