您的位置:首页 > 理论基础 > 计算机网络

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

2016-08-29 21:29 826 查看

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

服务端

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();
}


}

$(".MathJax").remove();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络编程 java tcp