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

来源:互联网 发布:厨艺软件 编辑:程序博客网 时间:2024/05/23 19:49

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

服务端

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
原创粉丝点击