关闭

java网络编程之Tcp协议下的聊天小程序

标签: 网络编程javatcp
490人阅读 评论(0) 收藏 举报
分类:

需求:服务端和客户端实现一句一句的聊天。

服务端

package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;



public class MyChatService {
    public static void main(String[] args) throws IOException {
        // 获取serverSocket的服务
        ServerSocket serverSocket = new ServerSocket(9090);
        // 获取socket
        Socket socket = serverSocket.accept();
        // 获取socket输入流包装
        BufferedReader bufferdreader = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));

        // 获取标准的输入流包装
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                System.in));

        // 获取 输出流包装成buffered
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                socket.getOutputStream()));
        //判断从客户端发来的信息是否为空,输入信息,写信息
        String str = "";
        while ((str = bufferdreader.readLine()) != null) {

            System.out.println("客户端发来消息:"+str);
            str =reader.readLine();
            writer.write(str + "\r\n");
            writer.flush();
        }
        serverSocket.close();


    }
}

客服端

package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.security.KeyRep;

import javax.xml.ws.handler.MessageContext.Scope;

/*
发消息给服务端
接受服务端的消息
*/
public class MyChatClient {
public static void main(String[] args) throws IOException, IOException {
// 创建socket的服务
Socket socket = new Socket(InetAddress.getLocalHost(), 9090);

    // 获得标准输入流,并包装
    BufferedReader bufferedReader = new BufferedReader(
            new InputStreamReader(System.in));
    // 获得流对象的输出流
    BufferedWriter bufferedWriter = new BufferedWriter(
            new OutputStreamWriter(socket.getOutputStream()));
    // 读取输入流中的数据如果不等于空,写信息。输入信息。

// bufferedWriter.write(“hello 服务端 \r\n”);
// bufferedWriter.flush();

    // 获取socket的输入流,包装并输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    socket.getInputStream()));

    //如果流服务器,接受的数据不等于空,读出socket数据,写标准流数据        
    String str = "";
    while ((str = bufferedReader.readLine()) != null) {

        bufferedWriter.write(str + "\r\n");
        bufferedWriter.flush();

        str = reader.readLine();
        System.out.println("服务端发来消息:"+str);


    }
    socket.close();
}

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1187次
    • 积分:76
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    最新评论