关键词:
文章目录
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更为轻量,但是错误校验... 查看详情