网络编程应用:基于TCP协议【实现一个聊天程序】
来源:互联网 发布:苹果mac回收 编辑:程序博客网 时间:2024/05/16 02:00
要求:
基于TCP协议实现一个聊天程序,客户端发送一条数据,服务器端发送一条数据
客户端代码:
package Homework1;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class Client { public static void main(String[] args){ System.out.println("客户端已启动"); Socket socket=null; InputStream is=null; OutputStream os=null; try { //1.创建客户端套接字Socket对象 socket=new Socket("Localhost", 8888); //2.创建与Socket对接的输入输出流对象 is=socket.getInputStream(); os=socket.getOutputStream(); //3.创建聊天用的Scanner对象 Scanner input=new Scanner(System.in); byte[] bs=new byte[1024]; //4.给服务器(乙方)发送信息 while(true){ //输入要发送的数据 String string=input.next(); //将数据传输出去 os.write(string.getBytes()); os.flush(); //如果有一方回复了:bye,则表示聊天结束 if(string.equals("bye")){ break; } //5.接收服务器(乙方)回复的消息 int count=is.read(bs); if(new String(bs,0,count).equals("bye")){ break; } System.out.println("服务器回复:"+new String(bs,0,count)); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(socket!=null){ try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(os!=null){ try { os.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(is!=null){ try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}
服务端:
package Homework1;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 { public static void main(String[] args){ System.out.println("服务端已启动"); ServerSocket serverSocket=null; InputStream is=null; OutputStream os=null; try { //1.创建服务器端ServerSocket对象 serverSocket=new ServerSocket(8888); //2.得到Socket对象 socket=serverSocket.accept(); //3.得到与Socket对应的输入输出流 is=socket.getInputStream(); os=socket.getOutputStream(); //4.创建聊天使用的Scanner对象 Scanner input=new Scanner(System.in); byte[] bs=new byte[1024]; while(true){ //5.接收客户端(甲方)信息 int count=0; count=is.read(bs); //如果客户端回复了:bye,表示结束聊天 if(new String(bs,0,count).equals("bye")){ break; } System.out.println("客户端说:"+new String(bs,0,count)); //6.回复客户端(甲方) String string=input.next(); os.write(string.getBytes()); os.flush(); if(string.equals("bye")){ break; } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(os!=null){ try { os.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(is!=null){ try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(socket!=null){ try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(serverSocket!=null){ try { serverSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}
运行结果:
客户端(甲方)聊天列表:
服务器端(乙方)聊天列表:
0 0
- 网络编程应用:基于TCP协议【实现一个聊天程序】
- 网络编程应用:基于UDP协议【实现聊天程序】--练习
- 网络编程应用:基于TCP协议【实现文件上传】--练习
- 网络编程应用:基于TCP协议【实现对象传输】--练习
- Linux网络编程之聊天程序(TCP协议之select)
- java网络编程实现一个聊天程序
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序
- 黑马程序员----网络编程TCP协议聊天
- 基于TCP的网络聊天程序
- 基于TCP/UDP的网络聊天程序
- socket编程-- 基于TCP协议的网络程序
- socket编程-- 基于TCP协议的网络程序
- socket编程-- 基于TCP协议的网络程序
- 一个基于TCP的聊天程序
- 使用TCP/IP协议实现聊天程序
- 网络编程学习笔记二(实现一个基于简单TCP的用户注册程序)
- 网络编程(UDP协议-聊天程序)
- linux /etc/passwd /etc/shadow /etc/group 详解
- Java入门学习-使用Math,实现lg、平方、开方、round、floor、ceil的算法。
- 视频格式尺寸解释 VGA QVGA等
- mysql Access denied for user root@localhost错误解决方法总结
- 并发与同步、信号量与管程、生产者消费者问题
- 网络编程应用:基于TCP协议【实现一个聊天程序】
- 最长公共子序列
- C# MD5 16位和32位加密
- 这些年坚持写博客,我得到了什么
- 数据结构---线索二叉树
- Java BigDecimal详解
- %matplotlib inline syntax error
- MongoDB——shutting down with code:100
- improve your python code(7)