tcp案例代码(代码片段)

技术很low的瓜贼 技术很low的瓜贼     2023-03-25     726

关键词:

文章目录

TCP网络编程的案例代码

描述客户端与服务端的通信

普通服务端/客户端代码

  • 服务端
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务端
 */
public class ServerSocketTest 

    public static void main(String[] args) 
        ServerSocket ss = null;
        Socket s = null;
        // BufferedInputStream bis = null;
        BufferedReader br = null;
        PrintStream ps = null;
        try 
            // 创建ServerSocket类型的对象并提供端口号
            ss = new ServerSocket(8888);
            System.out.println("正在等待连接");
            // 等待客户端的链接请求 调用accept方法
            s = ss.accept();
            System.out.println("客户端链接成功");
            // 使用输入输出流进行通信
            // bis = new BufferedInputStream(s.getInputStream());  // 获取汉字出现乱码
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            ps = new PrintStream(s.getOutputStream());
            while (true) 
                System.out.println("获取到服务端的内容为");
                String s1 = br.readLine();
                System.out.println(s1); // 此处使用read()会使得回车无法解析,无法终止
                System.out.println("接收成功");
                System.out.println("服务器给客户端发送消息");
                ps.println("服务端收到!!!!");
                if (s1.equals("bye")) 
                    break;
                
            
         catch (IOException e) 
            e.printStackTrace();
         finally 
            if (null != ps) 
                ps.close();
            
            // 关闭Socket并释放有关资源
            if (null != s) 
                try 
                    s.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != ss) 
                try 
                    ss.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != br) 
                try 
                    br.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            

        
    


  • 客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

/**
 * 客户端
 */
public class SocketTest 

    public static void main(String[] args) 
        // 创建Socket类型的对象并提供服务端的主机名和端口号
        Socket s = null;
        PrintStream ps = null;
        Scanner sc = null;
        BufferedReader br = null;
        try 
            s = new Socket("Myd0130", 8888);
            System.out.println("链接服务器成功");
            Thread.sleep(5000);
            sc = new Scanner(System.in);
            // 使用输入输出流进行通信
            // 客户端向服务端发送消息
            ps = new PrintStream(s.getOutputStream());
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));

            while (true) 
                System.out.println("请输入要发送内容");
                String str = sc.next();
                ps.println(str);
                if (str.equals("bye")) 
                    break;
                
                System.out.println("发送内容成功");
                System.out.println("接收到的消息为");
                String s1 = br.readLine();
                System.out.println(s1);
            
         catch (IOException | InterruptedException e) 
            e.printStackTrace();
         finally 
            if (null != br) 
                try 
                    br.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != s) 
                try 
                    // 关闭Socket对象,并释放相关资源
                    s.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != sc) 
                sc.close();
            
            if (null != ps) 
                ps.close();
            

        
    


多线程方式代码

  • 多线程
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务端
 */
public class ThreadsSocket implements Runnable

    private Socket s;

    public ThreadsSocket(Socket s) 
        this.s = s;
    
    @Override
    public void run() 
        BufferedReader br = null;
        PrintStream ps = null;
        try 
            // 3.使用输入输出流进行通信
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            ps = new PrintStream(s.getOutputStream());
            while(true) 
                // 实现对客户端发来字符串内容的接收并打印
                // 当没有数据发来时,下面的方法会形成阻塞
                String s1 = br.readLine();
                InetAddress inetAddress = s.getInetAddress();
                System.out.println("客户端" + inetAddress + "发来的字符串内容是:" + s1);
                // 当客户端发来的内容为"bye"时,则聊天结束
                if ("bye".equalsIgnoreCase(s1)) 
                    System.out.println("客户端" + inetAddress + "已下线!");
                    break;
                
                // 实现服务器向客户端回发字符串内容"I received!"
                ps.println("I received!");
                System.out.println("服务器发送数据成功!");
            
         catch (IOException e) 
            e.printStackTrace();
         finally 
            if (null != ps) 
                ps.close();
            
            if (null != br) 
                try 
                    br.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != s) 
                try 
                    s.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        

    


  • 服务端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务端
 */
public class StartTest 

    public static void main(String[] args) 
        ServerSocket ss = null;
        Socket s = null;
        try 
            // 创建ServerSocket类型的对象并提供端口号
            ss = new ServerSocket(8888);
            System.out.println("正在等待连接");
            // 等待客户端的链接请求 调用accept方法
            System.out.println("等待连接请求");
            while (true) 
                s = ss.accept();
                System.out.println("客户端链接成功");
                ThreadsSocket threadsSocket = new ThreadsSocket(s);
                Thread t = new Thread(threadsSocket);
                t.start();
            
         catch (IOException e) 
            e.printStackTrace();
         finally 
            // 关闭Socket并释放有关资源
            if (null != s) 
                try 
                    s.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != ss) 
                try 
                    ss.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        
    


  • 客户端(多复制几份即可描述多个客户端)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

/**
 * 客户端
 */
public class SocketTest1 

    public static void main(String[] args) 
        // 创建Socket类型的对象并提供服务端的主机名和端口号
        Socket s = null;
        PrintStream ps = null;
        Scanner sc = null;
        BufferedReader br = null;
        try 
            s = new Socket("Myd0130", 8888);
            InetAddress inetAddress = s.getInetAddress();
            System.out.println(inetAddress + "连接服务器成功");
            Thread.sleep(5000);
            sc = new Scanner(System.in);
            // 使用输入输出流进行通信
            // 客户端向服务端发送消息
            ps = new PrintStream(s.getOutputStream());
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));

            while (true) 
                System.out.println("请输入要发送内容");
                String str = sc.next();
                ps.println(str);
                if (str.equals("bye")) 
                    break;
                
                System.out.println("发送内容成功");
                System.out.println("接收到的消息为");
                String s1 = br.readLine();
                System.out.println(s1);
            
         catch (IOException | InterruptedException e) 
            e.printStackTrace();
         finally 
            if (null != br) 
                try 
                    br.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != s) 
                try 
                    // 关闭Socket对象,并释放相关资源
                    s.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
            if (null != sc) 
                sc.close();
            
            if (null != ps) 
                ps.close();
            

        
    


监控案例之监控tcp连接数(代码片段)

五、监控案例之监控TCP1、安装agent,过程略(下面是apt安装,如果是编译安装,请注意路径)2、监控脚本cd/etc/zabbix/zabbix_agentd.conf.d/vimcheck_tcp.sh#!/bin/bashtcp_conn_status()TCP_STAT=$1ss-ant|awk‘NR>1++s[$1]ENDfor(kins)printk,s[k]‘>/tmp/tcp_conn.txtTC... 查看详情

12.7网络编程案例(代码片段)

12.7网络编程案例 12.7.1TCP多线程时间服务器主要功能: 子类化方式继承QTcpServer与QThread,创建TCP服务器,等待客户端连接,连上新的客户端之后,服务器获取本地时间,将时间发送给客户端,再断开连接,销毁线程。(配套... 查看详情

史上最全的python的web开发和网络编程附属详细解释+案例(代码片段)

文章目录1.IP地址2.端口2.1端口介绍2.2端口号介绍3.TCP3.1为什么要用TCP?3.2TCP和UDP的解释3.3TCP步骤和特点4.socket(套接字)5.TCP网络应用程序开发流程(重要)5.1刚安装ubuntu20遇到的问题5.2TCP两个程序开发过程5.3TCP客户端开发程序5.3TCP... 查看详情

网络编程案例多任务版tcp服务端程序开发(代码片段)

案例-多任务版TCP服务端程序开发案例-多任务版TCP服务端程序开发1.需求2.具体实现步骤3.多任务版TCP服务端程序的示例代码4.小结模拟QQ聊天-客户端模拟QQ聊天-服务端案例-多任务版TCP服务端程序开发学习目标能够说出多任务版TCP... 查看详情

tcp实现连接传输案例(代码片段)

使用的类   ServerSocket服务器端      构造方法:ServerSocket(端口号);接收端使用   方法:accept();返回一个Socket对象   getInetAddress();返回发送端的地址InetAddress对象   &n... 查看详情

一个抓包案例分析tcp的三次握手/四次挥手(代码片段)

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识本文将展示如何使用tcpdump抓包,以及如何用tcpdump和wireshark分析网络流量。文中的例子比较简单,适合作为入门参考。1基础环境准备为方便大... 查看详情

一个抓包案例分析tcp的三次握手/四次挥手(代码片段)

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识本文将展示如何使用tcpdump抓包,以及如何用tcpdump和wireshark分析网络流量。文中的例子比较简单,适合作为入门参考。1基础环境准备为方便大... 查看详情

网络传输--tcp(代码片段)

...端三、TCP网络程序--服务端四、TCP知识总结五、文件下载案例六、3次握手和4次挥手回到顶部 一、TCP简介TCP1.TCP的简介  TCP通信需要通过创建链接,数据传送,终止链接3个步骤  2.TCP的特点  面向连接:建立间接,通信,关闭... 查看详情

javase-21.3.2tcp通信程序练习1(代码片段)

1packageday12.lesson3.p1;23importjava.io.IOException;4importjava.io.InputStream;5importjava.io.OutputStream;6importjava.net.Socket;78/*93.3TCP通信程序练习110案例需求11客户端:发送数据,接受服务器反馈12服务器:收到消息后给出反馈13案例分析14客户端创 查看详情

181114案例下载文件后端编写(代码片段)

 一个简单的文件下载器importsocketdefmain():#1创建套接字tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2获取服务器的ipportdest_ip=input("请输入你的的服务器ip:")dest_port=input("请输入你的服务器port:")#3连接服务器tcp_socket.con 查看详情

多任务版tcp服务端程序开发案例+源码(代码片段)

学习目标:能够说出多任务版TCP服务端程序的实现过程文章目录1.需求2.具体实现步骤3.多任务版TCP服务端程序的示例代码:4.小结1.需求目前我们开发的TCP服务端程序只能服务于一个客户端,如何开发一个多任务版的TCP服务... 查看详情

java网络多线程专题(代码片段)

...;相关方法:代码展示:Socket:TCP网络通信编程应用案例(使用字节流)服务端代码客户端代码:TCP网络通信编程应用案例2服务端代码:客户端代码 查看详情

案例:文件下载器(代码片段)

案例:文件下载器服务器参考代码如下:fromsocketimport*importsysdefget_file_content(file_name):"""获取文件的内容"""try:withopen(file_name,"rb")asf:content=f.read()returncontentexcept:print("没有下载的文件:%s"%file_name)defmain():iflen... 查看详情

java案例:基于tcp的简单聊天程序(代码片段)

文章目录一、如何实现TCP通信二、编写C/S架构聊天程序(一)编写服务器端程序-Server.java(二)编写客户端程序-Client.java(三)测试服务器端与客户端能否通信(四)程序优化思路-服务器端采用多... 查看详情

java网络编程编程之tcp编程和udp编程(代码片段)

...基础1.TCP编程1.1网络相关基础概念1.2TCP协议介绍1.3TCP编程案例2.UDP编程2.1UDP协议介绍2.2UDP编程案例1.TCP编程1.1网络相关基础概念我们在学习网络编程前先来复习一下IP地址端口号协议,套接字的相关概念。IP地址:用来唯一标识... 查看详情

linux网络编程基础及多线程并发案例(代码片段)

目录1.ip:端口 TCP/IP协议   2.socket头文件  sys/socket.h     3.字节序4.ip地址转换函数5.sockaddr和sockaddr_in6.服务器端基本函数bind listenaccept7.客户端基本函数  connect8.send和recv 8.多线程9.通信流程10.多线程并发样例程序 1.ip:端口 ... 查看详情

socket网络编程(代码片段)

TCP协议网络通讯案例(http协议)1、创建TcpServer(tcp服务端)packagecom.cppdy.tcp;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.net.ServerSocket;import 查看详情

2022年11月.netcore工具案例-.net7中的quic通信(代码片段)

前言QUIC(QuickUDPInternetConnection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议。我们知道,TCP/IP协议族是互联网的基础。其中传输层协议包括TCP和UDP协议。与TCP协议相比,UDP更为轻量,但是错误校验... 查看详情