java

位置:IT落伍者 >> java >> 浏览文章

Java语言的Socket类[1]


发布日期:2020年07月14日
 
Java语言的Socket类[1]
当客户程序需要与服务器程序通讯的时候客户程序在客户机创建一个socket对象Socket类有几个构造函数两个常用的构造函数是 Socket(InetAddress addr int port) 和 Socket(String host int port)两个构造函数都创建了一个基于Socket的连接服务器端流套接字的流套接字对于第一个InetAddress子类对象通过addr参数获得服务器主机的IP地址对于第二个函数host参数包被分配到InetAddress对象中如果没有IP地址与host参数相一致那么将抛出UnknownHostException异常对象两个函数都通过参数port获得服务器的端口号假设已经建立连接了网络API将在客户端基于Socket的流套接字中捆绑客户程序的IP地址和任意一个端口号否则两个函数都会抛出一个IOException对象

如果创建了一个Socket对象那么它可能通过调用Socket的 getInputStream()方法从服务程序获得输入流读传送来的信息也可能通过调用Socket的 getOutputStream()方法获得输出流来发送消息在读写活动完成之后客户程序调用close()方法关闭流和流套接字下面的代码创建了一个服务程序主机地址为端口号为的Socket对象然后从这个新创建的Socket对象中读取输入流然后再关闭流和Socket对象

Socket s = new Socket ( );

InputStream is = sgetInputStream ();

// Read from the stream

isclose ();

sclose ();

接下面我们将示范一个流套接字的客户程序这个程序将创建一个Socket对象Socket将访问运行在指定主机端口上的服务程序如果访问成功客户程序将给服务程序发送一系列命令并打印服务程序的响应List使我们创建的程序SSClient的源代码

Listing : SSClientjava

// SSClientjava

import javaio*;

import javanet*;

class SSClient

{public static void main (String [] args)

{String host = localhost;

// If user specifies a commandline argument that argument

// represents the host name

if (argslength == )

host = args [];

BufferedReader br = null;

PrintWriter pw = null;

Socket s = null;

try

{// Create a socket that attempts to connect to the server

// program on the host at port

s = new Socket (host );

// Create an input stream reader that chains to the socket´s

// byteoriented input stream The input stream reader

// converts bytes read from the socket to characters The

// conversion is based on the platform´s default character

// set

InputStreamReader isr;

[] [] []

               

上一篇:Java语言的Socket类[2]

下一篇:Java语言的Socket类[3]