网络编程之tcp-socket(代码片段)

zjm1999 zjm1999     2023-02-07     554

关键词:

一.Socket

    ?两个Java应用程产可通过一个双向的网络通信连接实现数据文换,这个及向链路的一端称
     为个Socket。
Socket通常用来实现client-server(网络释义:主从式架构)连接。
     ?java. net包中定义的两个类Socket和Serversopket(TCP服务器端的插座socket), 分别用来实现双向连接的
     cljent和server
     建立连接时所需的寻址信息为远程计算机的IP地址和端口号[区分不同的应用程序](Port number)

补充:①端口号2字节,最多有65536个端口,一个应用程序可以占用多个端口②端口分两种:UDP端口和TCP端口,每一种都是65536个端口,它们是分开的


二.程序实例

技术分享图片

 

首先是服务器端

 1 import java.io.DataInputStream;
 2 import java.net.*;
 3 /**
 4  * 一.public class ServerSocket extends Object implements Closeable
 5  * 这个类实现了服务器套接字。服务器套接字等待通过网络进入的请求。 
 6  * 它根据该请求执行一些操作,然后可能将结果返回给请求者。 
 7  * 综上所诉:ServerSocket类为阻塞式的类型
 8  * 
 9  * 二.public Socket accept()throws IOException
10  * 侦听要连接到此套接字并接受它。 该方法将阻塞直到建立连接。
11  */
12 public class TCPserver 
13      public static void main(String[] args) throws Exception 
14             //等待客户端连接,告知serversocket服务器端在6666端口进行监听
15             ServerSocket ss=new ServerSocket(6666);
16             while(true) //接收多个客户端连接
17                 //接受客户端连接
18                 Socket s=ss.accept();
19                 //客户端接收到数据流
20                 DataInputStream dis=new DataInputStream(s.getInputStream());
21                 //打印
22                 System.out.println(dis.readUTF());
23                 //关闭流和服务器端口
24                 dis.close(); s.close();
25             
26         
27 

其次是客户端

 1 import java.io.DataOutputStream;
 2 import java.io.OutputStream;
 3 /**
 4  * public class Socket extends Object implements Closeable
 5  * 该类实现客户端套接字(也称为“套接字”)。 
 6  * 套接字是两台机器之间通讯的端点。
 7  * 
 8  *  构造方法public Socket(String host,int port)throws UnknownHostException,
 9  *  IOException创建流套接字并将其连接到指定主机上的指定端口号。
10  */
11 import java.net.*;
12 public class Client 
13     public static void main(String[] args) throws Exception
14         //客户端申请连接
15         Socket sc=new Socket("127.0.0.1", 6666);
16         //客户端通过流开始对话
17         OutputStream os = sc.getOutputStream();
18         //包装管道,以UTF-8的形式输出
19         DataOutputStream dos=new DataOutputStream(os);    
20         dos.writeUTF("莫西莫西,我是巫妖果子");
21         //关闭流和客户端
22         dos.close(); sc.close();
23         
24 

技术分享图片

 

温馨小提示:①程序启动时先启动server端(监听),再启动client端②程序原理图,包括数据流都是通过插座socket进行传输(后续待补充)

 技术分享图片

 

网络编程(代码片段)

目录网络编程一、OSI七层协议1.OSI七层协议之物理链接层2.OSI七层协议之数据链路层3.OSI七层协议之网络层4.OSI七层协议之传输层5.OSI七层协议之会话层6.OSI七层协议之表示层7.OSI七层协议之应用层二、socket模块三、并发编程理论1.... 查看详情

markdown锈编程之道笔记(代码片段)

查看详情

statethreads之网络架构库(代码片段)

原文:StateThreadsforInternetApplications介绍StateThreadsisanapplicationlibrarywhichprovidesafoundationforwritingfastandhighlyscalableInternetApplicationsonUNIX-likeplatforms.Itcombinesthesimplicityofthemu 查看详情

初识恶意代码之------网络蠕虫(代码片段)

网络蠕虫这种恶意程序的特性是通过网络或者系统漏洞进行传播,很大部分的网络蠕虫都有向外发送带毒邮件、阻塞网络的特性。几个著名的蠕虫:蠕虫名称所利用的具体漏洞爆发时间SlammerMS02-0392003.1.25BlasterMS03-0262003.7.11SasserMS0... 查看详情

网络编程之select(代码片段)

一select函数简介  select一般用在socket网络编程中,在网络编程的过程中,经常会遇到许多阻塞的函数,网络编程时使用的recv,recvfrom、connect函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执... 查看详情

网络编程之黏包(代码片段)

黏包现象基于tcp协议实现的黏包fromsocketimport*importsubprocessip_port=(‘127.0.0.1‘,8888)BUFSIZE=1024tcp_socket_server=socket(AF_INET,SOCK_STREAM)tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)tcp_socket_se 查看详情

网络编程之urllib模块(代码片段)

首先urlib并不是一个很好用的方法,这里仅作简单介绍。一般我们用requests方法来代替urlib方法。1.get请求1fromurllibimportrequest2url=‘http://www.baidu.com‘3req=request.urlopen(url)#打开一个url,发送get请求4content=req.read().decode()#读取源代码5fw=o... 查看详情

winsocket编程之域名解析(代码片段)

...析0.前置知识a.hostnetb.gethostname()c.gethostbyname()1.实现流程2.代码Winsocket编程之域名解析0.前置知识a.hostnethostent是hostentry的缩写,该结构记录主机的信息,包括主机名、别名、地址类型、地址长度和地址列表。之所以主机的地... 查看详情

tensorflow之编程模式(代码片段)

主要编程模式有:(1)命令式编程 —— Torch(2)符号式编程 —— TensorFlow 命令式编程:易理解,命令语句基本没优化:C,Java,C++,Python 符号式编程:涉及较多的嵌入和优化,运行速度有同比提升例如:1impo... 查看详情

unity之使用unitywebrequest获取网络时间(代码片段)

Unity之使用UnityWebRequest获取网络时间实现代码实现代码代码注释比较完整就不过多赘述了,直接将代码复制到工程中使用即可。usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Networking;publicclass 查看详情

结对编程之队友代码分析(代码片段)

优点:JavaGUI界面:界面简约,操作简单,实用性强    2.独特的解题思想(上代码)//生成对应年级的题目  publicStringgetSubject(inttype)   Randomrand=newRandom();   intNum,NumOpe;    查看详情

springboot编程之全局异常捕获(代码片段)

springboot编程之全局异常捕获 1、创建GlobalExceptionHandler.java,在类上注解@ControllerAdvice,在方法上注解@ExceptionHandler(value=Exception.class),Exception.class表示拦截所有的异常信息 packagecom.imooc.web.controller;importcom 查看详情

提升--04---并发编程之---有序性(代码片段)

并发编程之有序性经典案例1:importjava.util.concurrent.CountDownLatch;publicclassT01_Disorderprivatestaticintx=0,y=0;privatestaticinta=0,b=0;publicstaticvoidmain(String[]args)throwsInterruptedExcep 查看详情

dart异步编程之future(代码片段)

...步编程:FuturesDart是一个单线程编程语言。如果任何代码阻塞线程执行都会导致程序卡死。异步编程防止出现阻塞操作。Dart使用Future对象表示异步操作。介绍如下代码可能导致程序卡死//SynchronouscodeprintDailyNewsDige 查看详情

并发编程之io模型(代码片段)

Python并发编程之IO模型 目录:  一、IO模型介绍  二、阻塞IO (blockingIO)  三、非阻塞IO (nonblockingIO)  四、多路复用IO (IOmultiplexing)  五、异步IO(asynchronousIO)  六、IO模型比较分析  七、selsectors模块 ... 查看详情

网络编程基础之粘包现象(代码片段)

一、粘包现象原理分析  1、我们先来看几行代码,从现象来分析:    测试程序分为两部分,分别是服务端和客户端    服务端.py 1#!/usr/bin/envpython32#-*-coding:utf-8-*-3#writebycongcong456importsocket78server=socket.socket(family=sock... 查看详情

python进阶之网络编程(代码片段)

...通信使用网络的目的把多方链接在一起,进行数据传递;网络编程就是,让不同电脑上的软件进行数据传递,即进程间通信;ip地址ip地址概念和作用IP地址是什么:比如192.168.1.1这样的一些数字;ip地址的作用:用来在电脑中标... 查看详情

编程规范之书写规范(代码片段)

目录编程规范之书写规范1.每个缩进层级使用4个空格2.每行最多79个字符3.顶层函数或类的定义之间空两行4.采用UTF-8编码文件(通用编码格式)5.每行只使用import导入一个模块(分组标准库、三方库和本地库)6.在小括号、中括号... 查看详情