上面代码通过一个指定的端口范围(如1至1000),并且利用多线程将这个端口范围分成不同的段进行扫描,这样可以大大提高扫描的效率。
可通过如下命令行去运行例程4-2。
java mysocket.MyConnection1 1000 3000 20
二、发送和接收数据
在Socket类中最重要的两个方法就是getInputStream和getOutputStream。这两个方法分别用来得到用于读取和写入数据的InputStream和OutputStream对象。在这里的InputStream读取的是服务器程序向客户端发送过来的数据,而OutputStream是客户端要向服务端程序发送的数据。
在编写实际的网络客户端程序时,是使用getInputStream,还是使用getOutputStream,以及先使用谁后使用谁由具体的应用决定。如通过连接邮电出版社网站(www.ptpress.com.cn)的80端口(一般为HTTP协议所使用的默认端口),并且发送一个字符串,最后再读取从www.ptpress.com.cn返回的信息。
package mysocket;
import java.net.*;
import java.io.*;
public class MyConnection2
{
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("www.ptpress.com.cn", 80);
// 向服务端程序发送数据
OutputStream ops = socket.getOutputStream();
OutputStreamWriter opsw = new OutputStreamWriter(ops);
BufferedWriter bw = new BufferedWriter(opsw);
bw.write("hello worldrnrn");
bw.flush();
// 从服务端程序接收数据
InputStream ips = socket.getInputStream();
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String s = "";
while((s = br.readLine()) != null)
System.out.println(s);
socket.close();
}
}
评论加载中...- 2009-5-14My97DatePicker(日期控件)的使用及问题
- 2009-5-14Java网络编程从入门到精通(13):使用Socket类接收和发送数据
- 2009-5-14理解JVM如何使用Windows和Linux上的本机内存 上
- 2009-5-14理解JVM如何使用Windows和Linux上的本机内存 下
- 2009-5-14使用Java编写Oracle存储过程
- 2009-5-13Java程序开发中的简单内存分析
- 2009-5-13eclipse + JBoss 5 + EJB3开发指南(2):编写有状态的SessionBean
- 2009-5-13eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean
- 2009-5-13浅谈Seam 中的取数据的问题和@Factory的使用
- 2009-5-13事件消息通知系统
