Socket编程应用--及时聊天+自动回复机器人

本文介绍了Java中的Socket编程,包括服务器端和客户端的一发一收通信机制,以及如何通过多线程实现即时聊天。此外,还展示了如何结合JDBC创建一个自动回复机器人,当客户端发送信息时,服务器端从数据库查找相应回应并返回。
摘要由CSDN通过智能技术生成

Socket介绍

套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。
当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。
java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。

Server端和Client端发送信息(一发一收,交替实行)

服务器端代码

package network_coding;

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.Scanner;
 
public class Server_Chat {
   
 
    public static void main(String[] args) {
   
        try {
   
 			//服务端打开8888接口
            ServerSocket ss = new ServerSocket(8888);
 
            System.out.println("监听在端口号:8888");
            Socket s = ss.accept();
 
            InputStream is = s.getInputStream();
            DataInputStream dis = new DataInputStream(is);
            //把输出流封装在DataOutputStream中
            OutputStream os = s.getOutputStream();
            DataOutputStream dos = new DataOutputStream(os);
            
            /*
             * 因为代码编写的时候,默认是客户端先发送消息,所以服务器这边应该先接收信息,再入发送信息。这个逻辑关系不能乱。
             */
            while (true) {
   
            	//使用readUTF读取字符串
                String msg = dis.readUTF();
                System.out.println("收到客户端信息:"+msg);
                Scanner sc = new Scanner(System.in);
                String str = sc.next();
                dos.writeUTF(str);
            }
 
        } catch (IOException e) {
   
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
    }
}

客户端代码

package network_coding;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
  
public class Client_Chat {
   
  
    public static void main(String[] args) {
   
  
        try {
   
	        //连接到本机的8888端口
            Socket s = new Socket("127.0.0.1", 8888);
  
            OutputStream os = s.getOutputStream();
            DataOutputStream dos = new DataOutputStream(os
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值