首页 > 编程语言 >多线程实现实例-简单的聊天小程序TCP编程尝试

多线程实现实例-简单的聊天小程序TCP编程尝试

时间:2023-09-24 19:44:06浏览次数:34  
标签:java socket 编程 TCP import new 多线程 public Socket

运用TCP编程,实现一个从客户端到服务端多线程聊天的功能。

 

获取信息线程的代码

Get.java

package com.xyq.HW;

import java.io.BufferedReader;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;


public class Get extends Thread{
    private Socket socket;
    Get(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        while(true){
            try {
                InputStream is = socket.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String content = br.readLine();
                System.out.println("发送的内容是"+content);

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }
}

发送信息线程的代码

Send.java

package com.xyq.HW;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class Send extends Thread{
    Scanner sc = new Scanner(System.in);
    private Socket socket;

    Send(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        while(true){

            try {
                OutputStream os = socket.getOutputStream();
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
                String content = sc.nextLine();
                bw.write(content);
                bw.newLine();
                bw.flush();

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

客户端代码Client.java

package com.xyq.HW;

import java.net.Socket;

public class Client {
    public static void main(String[] args) throws  Exception {
        Socket socket = new Socket("localhost",9999);

        Get rt = new Get(socket);
        rt.start();
        //4.启动第二个线程
        Send st = new Send(socket);
        st.start();

    }
}

服务器代码Server.java

package com.xyq.HW;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server  {
public static void main(String[]args) throws IOException {
        //1.创建连接
        ServerSocket ss = new ServerSocket(9999);
        //2.等待客户端连接
        Socket socket = ss.accept();
        //3.客户端连接后启动第一个线程
        Get rt = new Get(socket);
        rt.start();
        //4.启动第二个线程
        Send st = new Send(socket);
        st.start();

        }
}

实现效果:

 

标签:java,socket,编程,TCP,import,new,多线程,public,Socket
From: https://www.cnblogs.com/sxwgzx23/p/17726510.html

相关文章

  • TCP三次握手四次挥手
    TCP(Transfercontrolprotocol)传输控制协议一、两种传输模式:TCP面向有连接可靠常用于点对点微信UDP面向无连接高速常用于点对面视频二、数据方向:在互联网的通信中,永远是客户端主动连接到服务端三、端口的作用:计算机用于数据通信的虚拟接口四、端口类型......
  • 第三周Linux教材第十章学习笔记——sh编程
    第十章——sh编程sh脚本1.sh脚本是一种为shell编写的脚本程序。这个程序用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能。第一行必须为#!/bin/sh2.命令行使用chmod+x <filename>编译后才能用./filename来运行。3.......
  • 大学新人小白,学习编程第一步‘’坚持‘’
    当下的各种编程语言盛行,鱼龙混杂,有C++,Python,java。虽然大多数人在初高中时有了解过小猫cat,Python学习等,之所以大学选择C语言或许应该离不开它是”千万家之本“。对于一位未来正打算从事相关行业的小白来说,学之根本尤为重要。学习第一步,”坚持“一堂课的开始一般是枯燥的,因为你并未......
  • 一文读懂Shell进程操作:编程新手必看
    什么是程序,什么又是进程程序是指令的集合,而进程则是程序执行的基本单元。为了让程序完成它的工作,必须让程序运行起来成为进程,进而利用处理器资源、内存资源,进行各种 I/O 操作,从而完成某项特定工作。从这个意思上说,程序是静态的,而进程则是动态的。进程有区别于程序的地方还有:进程......
  • [转]Websocket 底层是 TCP 还是 UDP?白话版解析 TCP 和 UDP 传输过程
    原文地址:Websocket底层是TCP还是UDP?白话版解析TCP和UDP传输过程-掘金写在前面在前面陆陆续续写了好几篇数字孪生相关的文章,而其中所涉及的一个其他项目比较不常使用的技术,网络通讯协议Websocket,这个协议主要用于服务器定时向客户端推送数据,相比HTTP更加适合数字......
  • 一文弄懂Java线程池 + Runnable多线程 + 调用WebService接口
    大家好,我是哪吒。一、需求很简单根据接口文档,调用第三方webservice接口,拼接入参,处理回参。RPC调用Webservice接口是一种远程调用的方式,通过指定Webservice接口的调用地址、命名空间、调用的方法名调用远程接口获取结果。二、解决方案通过ExecutorService新建线程池;定义thread类,请......
  • Uinx\Linux系统编程第十章
    第十章sh编程10.1sh脚本sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。10.2sh脚本与C程序这两者之间有一些相似之处,但在根本上是不同的。sh是一个解释程序,逐行读取脚本文件并直接执行这些行。如果行是可执行命令且为内置命令,那么sh可直接执行。否则,他会复......
  • TCP协议的秘密武器:流量控制与拥塞控制
    TCP可靠性传输相信大家都熟知TCP协议作为一种可靠传输协议,但它是如何确保传输的可靠性呢?要实现可靠性传输,需要考虑许多因素,比如数据的损坏、丢失、重复以及分片顺序混乱等问题。如果不能解决这些问题,就无法实现可靠传输。因此,TCP采用了序列号、确认应答、重发控制、连接管理和......
  • 1.多线程(实现方式,常用方法,生命周期)
    多线程(实现方式,常用方法,生命周期)概述:可以让程序同时做多件事情;可以提高效率;只要你想让多个事情同时运行就需要用到多线程;如: 软件中的耗时操作、所有的聊天软件、所有的服务器‘并发和并行:并发:在同一时刻,有多个指令在单个CPU上交替执行;并行:在同一时刻,有多......
  • Linux系统编程之Makefile
    Makefile什么是Makefile我想说,在学习编程初阶段我们习惯性使用GCC/G++命令来帮助我们编译调试代码,可是当进行系统性编程的时候,编译和调试得复杂起来,我们可能需要许许多多的文件,那么命令可能是一大行并且可能自己都不知道那些需要编译,那些是刚刚修改过,只需要再次对进行修改,而不......