`

Java TCP/IP Socket 编程 笔记(二)—TCP的例子

    博客分类:
  • java
阅读更多

1.InetAddress类和SocketAddress用于识别网络主机
TCP协议客户端和服务器端的套接字为Socket和ServerSocket
UDP协议的客户端和服务器端的套接字为DatagramSocket

2.
类 NetworkInterface表示一个由名称和分配给此接口的 IP 地址列表组成的网络接口,其getNetworkInterfaces()返回此机器上的所有接口。getInetAddresses()是返回一个 Enumeration 并将所有 InetAddress 或 InetAddress 的子集绑定到此网络接口的便捷方法。(注意:一个网络接口可能包含IPv4或IPv6地址)

3.类 InetAddress的getHostAddress()返回 IP 地址字符串(以文本表现形式)。 getAllByName(String host)在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。getHostName()获取此 IP 地址的主机名。getHostAddress() 返回 IP 地址字符串(以文本表现形式)。

4.TCP套接字
服务器端ServerSocket实例监听TCP链接请求,并为每个请求创建新的Socket实例。也就是说,服务器端要同时处理ServerSocket实例和Sockete实例,而客户端只需要使用Socket实例。

TCP客户端:
Java代码  收藏代码

    public class TCPEchoClient {  
        public static void main(String [] args) throws UnknownHostException, IOException, InterruptedException {  
            if(args.length<2||args.length>3){  
                throw new IllegalArgumentException("Parameter(s):<Server> <Word> [<Port>]");  
            }  
              
            String server=args[0];  
              
            byte [] data=args[1].getBytes();  
              
            int servPort=(args.length==3)?Integer.parseInt(args[2]):7;  
              
            //1.创建一个Socket实例:构造函数向指定的远程主机和端口建立一个TCP连接  
            Socket socket=new Socket(server,servPort);  
            System.out.println("Connected to server... sending echo string");  
              
            /** 
             *2. 通过套接字的输入输出流进行通信:一个Socket连接实例包括一个InputStream和一个OutputStream,它们的用法同于其他Java输入输出流。 
             */  
            InputStream in=socket.getInputStream();  
            OutputStream out=socket.getOutputStream();  
              
            out.write(data);  
              
            int totalBytesRcvd=0;  
            int bytesRcvd;  
              
            while(totalBytesRcvd<data.length){  
                if((bytesRcvd=in.read(data, totalBytesRcvd, data.length-totalBytesRcvd))==-1){  
                    throw new SocketException("Connection closed prematurely");  
                }  
                totalBytesRcvd+=bytesRcvd;  
            }  
            System.out.println("Receved: "+new String(data));  
              
            //3.使用Socet类的close()方法关闭连接  
            socket.close();  
        }  
    }  




TCP服务器端代码:
Java代码  收藏代码

    public class TCPEchoServer {  
        private static final int BUFSIZE=32;  
          
        public static void main(String [] args) throws IOException, InterruptedException{  
            if(args.length!=1){  
                throw new IllegalArgumentException("Parameter(s):<Port>");  
            }  
              
            int servPort=Integer.parseInt(args[0]);  
              
            //1.创建一个ServerSocket实例并制定本地端口。此套接字的功能是侦听该制定端口收到的连接。  
            ServerSocket servSock=new ServerSocket(servPort);  
              
            int recvMsgSize;  
              
            byte [] receiveBuf=new byte[BUFSIZE];  
              
            //2.重复执行  
            while(true){  
                //a.调用ServerSocket的accept()方法以获取下一个客户端连接。  
                //基于新建立的客户端连接,创建一个Socket实例,并由accept()方法返回  
                Socket clntSock=servSock.accept();  
                SocketAddress clientAddress=clntSock.getRemoteSocketAddress();  
                System.out.println("Handling client at "+clientAddress);  
                  
                //b,使用所返回的Socket实例的InputStream和OutputStream与客户端进行通信  
                InputStream in=clntSock.getInputStream();  
                OutputStream out=clntSock.getOutputStream();  
      
                while((recvMsgSize=in.read(receiveBuf))!=-1){  
                    out.write(receiveBuf, 0, recvMsgSize);  
                }  
              
                //c,通信完成后,使用Socket的close()方法关闭该客户端套接字链接  
                clntSock.close();  
            }  
        }  
    }  
分享到:
评论

相关推荐

    Linux系统TCP/IP编程

    教你如何建立Linux系统socket通信程序,并且附带一份linux下很多函数的使用笔记....

    VC学习笔记-基于TCP的socket编程

    VC学习笔记 基于TCP的socket编程

    socket 编程 网络编程资料大全 给力

    网络通信协议,网络通信基础知识,socket网络编程的一些基础知识,Socket网络编程学习笔记,网络编程总结,2011-学习资料大全:java_socket编程,学习网络编程的十个步骤,socket编程入门(经典版),Unix_网络编程...

    百度地图毕业设计源码-TCP-IP-NetworkNote::blue_book:《TCP/IP网络编程》(韩-尹圣雨)学习笔记

    《TCP/IP网络编程》学习笔记 :carp_streamer: 此仓库是我的《TCP/IP网络编程》学习笔记及具体代码实现,代码部分请参考本仓库对应章节文件夹下的代码。如果本笔记的内容对你有用,请点击一个 star ,转载请注明出处...

    TCP/UDP Socket调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client

    SocketTool V4.0版本支持JavaScript编程方式,从而增加了灵活性。 JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,广泛用于客户端的脚本...

    Socket TCP Java 高清学习资料合集

    包括 1.TCP-IP详解卷1:协议 中文版PDF...2.高级TCP/IP编程 中文版PDF 3.TCPIP Sockets in Java 2nd 英文版PDF, 4.Advanced JAVA networking英文版PDF 5.中文版Socket Java教程 6.Socket Java学习笔记 7.UDP简单案例

    百度地图开发java源码-TCP-IP-NetworkNote:《TCP/IP网络编程》(韩-尹圣雨)学习笔记

    百度地图开发java源码 1 开始网络编程 1.1 理解网络编程和套接字 linux 头文件 #include windows 头文件 #include 基于linux平台的实现 网络编程结束连接请求的套接字创建过程为 1. 调用socket函数创建套接字 int ...

    网络编程课堂笔记

    Unix TCP/IP 分层协议以及基于Linux的socket套接字网络编程学习笔记。

    Socket网络编程学习笔记.zip

    该笔记主要介绍的网络编程中涉及的网络计算机的基本概念,第二章及第三章分别对TCP./IP、UDP两种网络编程进行了不同级别的编程解释,适合初次接触网络编程的朋友,通俗易懂,希望对大家有用

    计算机网络-实验报告5tcpip socket 高级编程.pdf

    计算机网络-实验报告5tcpip socket 高级编程。观看视频来自小破站。

    Linux网络编程超级详细笔记

    Socket编程:Socket是用于实现网络通信的编程接口,支持基于TCP/IP协议的传输,包括TCP和UDP。在Linux下,使用Socket编程可以实现网络通信,包括客户端和服务器端。 IP地址和端口:IP地址是用于标识网络上的设备的...

    android开发笔记socket之tcp

    使用tcp通讯, 1 实现连接服务器 2 收发数据并显示

    Linux协议栈阅读笔记

    网络协议栈的实现基本采用TCP/IP的四层架构(链路、网络、传输、应用)。不过在实际学习中通常讲到的是5层架构(物理、链路、网络、传输、应用)。  BSD风格 BSD风格就是通常说的 socket、bind、connect、listen、...

    Linux网络编程socket编程学习

    自学Linux网络编程关于socket的编写,包括 server.c 和 client.c 的编写;很详细的介绍了网络套接字socket的C/S模型TCP协议的服务器端和客户端的程序函数以及编写过程;重点介绍多路I/O转接服务器的实现,包括select...

    python之渗透测试笔记(一)

    在TCP/IP协议族中,Socket并不是协议,而是一个编程接口。 TCP/IP是传输层协议,主要解决数据如何在网络中传输,而Socket则是对TCP/IP的封装和应用。 TCP是网络中的规则,是不能修改的,而Socket则是给程序员使用的...

    TCP-IP-Network-Note:博客:http

    TCP-IP-Network-Note本仓库是我的《TCP/IP网络编程》学习笔记以及代码实现。笔者目前使用Linux平台,因此本笔记只包括Linux部分。如果本笔记对您有用,别忘了点一个star。转载请注明出处,谢谢。运行环境操作系统: ...

    Java网络编程(第3版) 中文版

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    毕向东Java笔记(七)网络编程1

    } } }} TCP传输/* * TCP客户端Socket 服务器端 ServiceSocket * 客户端 * 1.建立socket服务.指定要连接的主机i

    通信与网络中的VC++环境下基于WinSock的网络通信

    引言  随着Internet的迅猛发展,网络通信应用程序的开发成为研究热点。Windows环境下进行通讯程序设计的最基本方法是应用...TCP/IP网络环境下的应用程序是通过网络系统编程界面套接字Socket(在Windows操作系统

    学习笔记(04):Python网络编程&并发编程-什么是socket

    1.什么是网络编程? 答:网络编程也叫做socket编程即套接字编程,基于遵循socket套接字的规定进行的编程 2.什么是socket?...即基于socket编程就可以达到遵循TCP等协议的要求 3.套接字socket的作用? 答:

Global site tag (gtag.js) - Google Analytics