网络编程之socket&serversocket(代码片段)

zhuobo zhuobo     2023-03-12     708

关键词:

网络编程之Socket & ServerSocket

Socket:网络套接字,网络插座,建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;socket用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。

1、客户端Socket类

此类实现客户端套接字

构造方法

构造方法 作用
Socket(String host, int port) 创建一个套接字,并将其连接到指定的主机的指定端口上

参数

String host:服务器主机的名称、服务器的IP地址

int port:服务器的端口号

成员方法

成员方法 作用
OutputStream getOutputStream() 返回此套接字的字节输出流
InputStream getInputStream() 返回此套接字的字节输入流
void close() 关闭此套接字

实现步骤

  • 创建一个客户端对象Socket,构造方法中绑定服务器的IP地址,端口号
  • 使用Socket对象中的方法getOutputStream获取网络字节输出流OutputStream对象
  • 使用网络字节输出流OutputStream对象的方法write,给服务器发送信息
  • 使用Socket对象的方法getInputStream获取网络字节输入流InputStream对象
  • 使用网络字节输入流InputStream的方法read读取服务器返回的信息
  • 调用close方法关闭套接字,释放资源

注意

  • 当客户端与服务器交互时,必须使用Socket中提供的网络流,不能使用自己创建的流对象
  • 当创建客户端Socket对象时,就会去请求服务器,和服务器进行三次握手建立TCP连接。如果此时服务器没有启动,就会抛出异常,否则就可以进行交互了。

TCP的客户端代码

package cn.zhuobo.day15.aboutSocket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientSocket 
    public static void main(String[] args) throws IOException 
        Socket so = new Socket("127.0.0.1", 8868);
        OutputStream outputStream = so.getOutputStream();
        outputStream.write("你是他妈的服务器吗".getBytes());

        InputStream inputStream = so.getInputStream();
        byte[] bytes = new byte[1024];
        int len = inputStream.read(bytes);
        System.out.println(new String(bytes, 0, len));

        so.close();

    

2、服务器套接字ServerSocket

此类实现服务端套接字

构造方法

构造方法 作用
ServerSocket(int port) 创建一个服务器套接字,并绑定到特定的端口号上

成员方法

成员方法 作用
Socket accept() 监听并接收此套接字的连接,用这个方法获取请求连接的客户端Socket对象
void close() 关闭此套接字

服务器ServerSocket的实现过程

  • 创建服务器ServerSocket对象,并指定需要的端口号
  • 使用ServerSocket对象的accept方法获取请求的客户端Socket对象
  • 使用获取到的Socket对象的getInputStream方法,获取网络字节输入流InputStream对象
  • 使用网络字节输入流InputStream对象的read方法,读取客户端发送的数据
  • 使用获取到的Socket对象的getOutputStream方法,获取网络字节输出流OutputStream对象
  • 使用网络字节输出流OutputStream队形的write方法,给客户端写回数据
  • 释放资源,Socket对象和ServerSocket对象依次调用close方法

服务器ServerSocket代码

package cn.zhuobo.day15.aboutSocket;

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

public class MyServerSocket 
    public static void main(String[] args) throws IOException 
        ServerSocket server = new ServerSocket(8868);
        Socket so = server.accept();

        InputStream inputStream = so.getInputStream();
        byte[] bytes = new byte[1024];
        int len = inputStream.read(bytes);
        System.out.println(new String(bytes, 0, len));

        OutputStream outputStream = so.getOutputStream();
        outputStream.write("我是他么的服务器,你是他么的客户端吗".getBytes());
        so.close();
        server.close();
    

这样就客户端和服务器就实现了通信

自测之lesson15:tcp&udp网络编程

题目:编写一个TCP通信的程序。 实现代码:#include<stdio.h>#include<sys/socket.h>#include<unistd.h>#include<sys/types.h>#include<string.h>#include<netinet/in.h>#include<arpa/in 查看详情

网络编程之socket

一、socket工作原理   二tcp/ip协议简述  三、socket使用   四、socketserver  查看详情

网络通讯之socket-tcp

网络通讯之Socket-Tcp分成3部分讲解:网络通讯之Socket-Tcp(一):1.如何理解Socket2.Socket通信重要函数3.SocketTcp调用的基本流程图网络通讯之Socket-Tcp(二):1.简单Socket实例2.完善Socket【黏包拆包】3.优化S 查看详情

io之socket网络编程

...ava中独有的概念,而是一个语言无关标准。任何可以实现网络编程的编程语言都有Socket。1,Socket概念  网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。  建立网络通信连接至少... 查看详情

网络之socket详解

网络之Socket详解1.什么是Socket?Socket本质上还是文件,因为Linux上一切皆文件。Socket也有对应的文件描述符(fd)。文件描述符相关的参考另外一篇博客。http://blog.csdn.net/weililansehudiefei/article/details/78113082在这里简单就认为,它是... 查看详情

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

套接字介绍socket介绍Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket... 查看详情

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

socket解释socekt又称为‘套接字’,用于描述IP和地址端口,是一个通信链路的句柄,应用程序通常通过套接字向网络发出请求或者应答网络请求。socket起源于Unix,所以也遵从“一切皆文件”的基本哲学,对于文件,... 查看详情

10.网络编程之socket(代码片段)

目录一、什么是socket?1.1套接字简介1.2套接字地址:主机-端口对二、面向连接的套接字和为无连接的套接字2.1面向连接的套接字2.2无连接的套接字三、python中socket3.1socket()模块函数3.2套接字对象(内置)方法3.3Socket中的一些参数四... 查看详情

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

本节内容:Socket语法及相关SocketServer实现多并发    Socket语法及相关 socket概念socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递。我们知道网络通信都是基... 查看详情

socket之send和recv原理剖析&tcp网络应用程序的注意点

...点1.TCP网络应用程序的注意点介绍2.网络程序通信的流程Socket之send和recv原理剖析1.认识TCPsocket的发送和接收缓冲区2.send原理剖析3.recv原理剖析4.send和recv原理剖析图5.小结TCP网络应用程序的注意点1.TCP网络应用程序的注意点介绍当TC... 查看详情

4.2.2网络编程之socket

1基于TCP协议的Socket服务器端首先声明一个ServerSocket对象并且指定端口号,然后调用Serversocket的accept()方法接收客户端的数据。Accept()方法在没有数据进行接收的处于堵塞状态。,一旦接收到数据,通过inputstream读取接收的数据。&nbs... 查看详情

4.socket(-)之控制台

一Socket介绍:  网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。  建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员... 查看详情

网络编程之socket编程实例

简单实例1server.c1#include<sys/types.h>2#include<sys/socket.h>//包含套接字函数库3#include<stdio.h>4#include<netinet/in.h>//包含AF_INET相关结构5#include<arpa/inet.h>//包含AF_INET相关操作的函数6#incl 查看详情

socket编程之多次收发数据

客户端:#-*-coding:utf-8-*-#客户端程序importsocketclient=socket.socket()#1、创建一个客户端对象client.connect((‘localhost‘,2235))#2、连接到服务器whileTrue: msg=input("-->").strip() client.send(msg.encode())#3、发送数据 data=clien 查看详情

socket编程之----tcp服务器

一、socket编程socket这个词可以表很多概念:在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯标识络通讯中的个进程,“IP地址+端口号”就称为socket。在TCP协议中,建连接的两个进程各有个socket来标识,那么这两个socket组成的socket pair就唯... 查看详情

nio入门之bio(代码片段)

传统BIO编程网络编程的基本模型是Client-Server模型,也就是两个进程之间相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的端口发起连接请求,通过三次握手建立连接,如果连... 查看详情

java网络编程之tcp的socket通信

1、客户端MyClient.java1importjava.io.*;2importjava.net.*;34publicclassMyClient5{6publicstaticvoidmain(String[]args)throwsException7{8Sockets=newSocket("192.168.1.1",30000);9//客户端启动ClientThread线程不断读取来自服务器的 查看详情

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

黏包现象基于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 查看详情