网络编程,IP地址,TCP 编程

package cn.socket001;
//网络编程:
/*网络概念
把多台计算机通过物理线路连接起来,就形成了网络。目的在于交换数据和共享信息。

网络通信的三要素
【1】IP地址:唯一标识网络上的每一台计算机。两台计算机之间通信的必备有素
【2】端口号:计算机中应用的标号(代表一个应用程序)
0-1024系统使用或保留端口
常见端口:http:80 stmp: 25 ftp:21
   有效端口0-65536,开发者可以的端口是1025-65536之间。一些第三方引用如mysql:3306 oracle:1251。
【3】通信协议:通信的规则 TCP,UDP
*/
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;

public class Test01 {
public static void main(String[] args) {
    //InetAddress 表示IP地址。( getLocalHost()  返回本地主机。)

    try {

        InetAddress ine=InetAddress.getLocalHost();
        System.out.println(ine.toString());
        //LATTOP-L0AH1H9U/192.168.6.130
        // 获取主机名称
        System.out.println(ine.getHostName());
        //LAPTTOP-L0AH1H9U
        System.out.println(ine.getHostAddress());
        //获取主机IP地址:192.168.6.130

        // 获取局域网指定名称网络主机的IP
        InetAddress ip1 = InetAddress.getByName("LATTOP-L0AH1H9U");
        System.out.println(ip1.toString());
        //LATTOP-L0AH1H9U/192.168.6.130

        // 在给定IP地址的情况下,获取主机IP信息
        byte[] ipArr = {(byte)192,(byte)168,(byte)2,(byte)130};
        InetAddress ip2 = InetAddress.getByAddress(ipArr);
        System.out.println(ip2.getHostName());
        //LATTOP-L0AH1H9U

        // 获取广域网指定名称网络主机的IP
        InetAddress ip3 = InetAddress.getByName("www.baidu.com");
        System.out.println(ip3.toString());
            //www.baidu.com/14.215.177.39
        InetAddress ip4 = InetAddress.getByName("www.bjsxt.com");
        System.out.println(ip4.toString());
        //www.bjsxt.com/47.93.94.43

    } catch (UnknownHostException e) {

        e.printStackTrace();
    }

}
}

网络通信模型

IP地址分类

特殊IP

  • 0.0.0.0:本机
  • 127.0.0.1:本机回环地址,用于本机测试
  • 255.255.255.255:当前子网,一般用于向当前子网广播信息
package cn.socket001;
/*TCP编程中,如果要完成通信,通信双方必须要创建socket,通过socket完成通信。
 *
 * TCP通信步骤
[1] 服务器启动ServerSocket作为通信的Server端,等待客户端链入。
[2] 客户端创建Socket作为通信的Client端
[3] Client端链入Server端后建立可靠的、双向的、持续性的、点对点的通讯连接,即可通信。
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//服务器server socket
public class Socket01 {
public static void main(String[] args) {
    System.out.println("服务器启动");
    //[1]创建ServerSocket作为通信的Server端(服务器)
    ServerSocket se=null;
    //创建Socket作为通信的Client端,等待连接客户端
    Socket so=null;
    try {
        //serversocket的端点
        se=new ServerSocket(8000);
        //等待连接客户端
        so=se.accept();
        System.out.println(se.getInetAddress().getHostAddress()+"已连接");
        //客户端连接成功后向客户端发送信息
        OutputStream out=so.getOutputStream();
        String a="瓦爱你";
        byte [] buf=a.getBytes("utf8");
        out.write(buf);
        //向客户端表示已发送玩的提示信息
        so.shutdownOutput();

        //接受来自客户端的信息
        InputStream in=so.getInputStream();
        byte[] buf2=new byte[1024];
        int len=in.read(buf2);
        String st=new String(buf2,0,len,"utf8");
        System.out.println(so.getInetAddress().getHostAddress()+st);
        //向客户端表示已接收完
        so.shutdownInput();
        //关闭通道
        out.close();
        in.close();
    } catch (IOException e) {
        //数据流异常
        e.printStackTrace();
    }

}
}
package cn.socket001;
/*TCP编程中,如果要完成通信,通信双方必须要创建socket,通过socket完成通信。
 *
 * TCP通信步骤
[1] 服务器启动ServerSocket作为通信的Server端,等待客户端链入。
[2] 客户端创建Socket作为通信的Client端
[3] Client端链入Server端后建立可靠的、双向的、持续性的、点对点的通讯连接,即可通信。
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
//客户端Socket
public class Socket02 {
public static void main(String[] args) {
    //创建Socket作为通信的Client端
    Socket so=null;
    try {
        //连接服务器(服务器地址,端口)
        so=new Socket("192.168.2.130",8000);
        //接收来自服务器的信息
        InputStream in=so.getInputStream();
        byte [] buf=new byte[1024];
        int len=in.read(buf);
        String st=new String(buf,0,len,"utf8");
        System.out.println(st);
        //接受完成
        so.shutdownInput();

        String st2="我也爱你";
            byte[] buf2=st2.getBytes("utf8");
            //向服务器发送信息
        OutputStream out=so.getOutputStream();
        out.write(buf2);
        //向服务器表示已发送完信息的提示信息
        so.shutdownOutput();
        //关闭通道
        out.close();
        in.close();
    } catch (IOException e) {
        //数据流异常
        e.printStackTrace();
    }
}
}


常见异常

端口被占用

java.net.BindException: Address already in use: JVM_Bind

服务器未启动

java.net.ConnectException: Connection refused: connect

连接超时异常

SocketTimeoutException  当网速很慢时,可能发生连接超时异常。

原文地址:https://www.cnblogs.com/406070989senlin/p/10846376.html

时间: 2024-10-07 07:15:12

网络编程,IP地址,TCP 编程的相关文章

网络之Ip地址

0.0.0.0---255.255.255.255 Ip地址分类(D.E)不对外开放 网络类别 最大网络数 IP地址范围(,唯一的,花钱的) 最大主机数 私有IP地址范围 (做内网ip,不可直接访问公网:比如学校网,不花钱的) A 126(2^7-2) 1.0.0.0—126.255.255.255 2^24-2 10.0.0.0—10.255.255.255 B 16384(2^14) 128.0.0.0—191.255.255.255 2^16-2 172.16.0.0—172.31.255

iOS 获取手机当前所连接的网络的IP地址

1首先要在当前所在的类导入这几个头文件: #include <arpa/inet.h>#include <netdb.h>#include <net/if.h>#include <ifaddrs.h>#import <dlfcn.h> 2具体代码的实现: //获取手机的网络的ip地址- (NSString *)getIPAddress{ BOOL success; struct ifaddrs * addrs; const struct ifad

Java网络编程:IP地址和端口号

1)IP地址 用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 2)IP地址分类 IPV4:32位地址,以点分十进制表示,如192.168.0.1 IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984 3)特殊的IP地址 127.0.0.1 本机地址 192.168.0.0--192.168.255.255私有地址,属于非注册地址,专

网络编程 IP地址

import java.net.*; public class IPDemo { public static void main(String[] args) throws Exception { InetAddress i=InetAddress.getLocalHost(); /*                            * 输出本机的主机名和IP地址                            */ //System.out.println(i.toString()

Linux网络编程--IP地址与域名解析(DNS)

在日常生活中,人们往往知道主机的域名而不知道主机的IP地址,而socket的API均基于IP地址,所以需要使用DNS域名解析服务器进行解析. 那么首先简单介绍一下DNS的原理,DNS服务器系统是按树形的结构构造,顶级域名服务器下分多个二级域名服务器,二级域名服务器下面又分多个下级域名服务器,每个服务器都下辖了一些主机,如图所示: 那么一个主机是如何查询一个域名的IP地址呢?首先需要想本地的域名服务器查询,如果没有就向上级域名服务查询,如果二级的也查不到就会向顶级域名服务器查询,如果顶级的也查不到

网络编程基础之TCP编程学习(一)

网络编程基础了解 socket套接字 socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,他给应用程序提供了使用如TCP/UDP等网络通讯的手段. linux中的网络编程通过socket接口实现,socket既是一种特殊的IO,提供对应的文件描述符.一个完整的socket都有一个相关描述{协议,本地地址,本地端口,远程地址,远程端口};每个socket有一个本地唯一Socket,由操作系统分配. 定位某个计算机用IP,定位某个服务用端口. 创建Socket #include <s

Windows Socket编程--ip地址转换

在Windows Socket编程中,需要将ip地址在网络字节顺序与主机字节顺序之间进行转换,该过程的代码如下: 1 #include <Winsock2.h> 2 #include <Ws2tcpip.h> //为了使用inet_pton()和inet_ntop()函数 3 #include <iostream> 4 5 #pragma comment(lib,"ws2_32.lib") //socket编程需要引用该库 6 7 using std

达内-网络工程-IP地址的认识以及二进制与十进制的转换方法

本文整体内容包括以下几个部分: IP地址简要介绍 IP地址的作用 IP地址的表示 2进制与10进制的转换 IP地址的结构 子网掩码 IP地址的管理 IP地址的分类 IP地址的问题 IP地址解决方案 IP地址的简要介绍: 凡是能够上网的设备,必须得有一个 IP 地址:而每一个IP地址,就相当于每一个人都必须有一个名字: 常见的IP地址的样子,比如 TP-Link 无线路由的默认地址:192.168.1.1 IP地址的作用: 在一定范围内,唯一的标识,一个上网的设备:(凡是需要上网的设备,必须得有I

网络搭建---IP地址的设置及ping的使用

IP地址的设置及ping的使用   <======[单击打开连接观看视频] 原文地址:https://www.cnblogs.com/sunlei0632/p/8297649.html

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,