Socket编程

2014-11-24 01:40:07 · 作者: · 浏览: 0

1 什么是socket?

-套接字(IP地址+端口)

-java.net包

-对于一个网络连接来说,套接字是平等的,并没有差别,不因为在s或c端而产生不同级别。

-不管是Socket还是ServerSocket他们的工作都是通过SocketImpl类及其子类完成的。

-重要的Socket API。

2 Simple Sample: Server-Client

Server: 服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属 于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户 连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

Client:客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

3

/**

* 服务器,使用ServerSocket监听指定的端口,

* 端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,

* 所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;

* 在完成会话后,关闭连接。

*/

package socket.entry;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

private Socket socket;

private ServerSocket ss;

public Server() throws IOException {

ss = new ServerSocket(8000);

while (true) {

socket = ss.accept();

BufferedReader br = new BufferedReader(new InputStreamReader(socket

.getInputStream()));

System.out.println("you input is : " + br.readLine());

}

}

public static void main(String[] args) {

try {

new Server();

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

* 客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;

* 会话完成后,关闭Socket。

*

* 客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

*/

package socket.entry;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

public class Client {

Socket client;

PrintWriter pw;

public Client() throws UnknownHostException, IOException {

client=new Socket("127.0.0.1",8000);

pw=new PrintWriter(client.getOutputStream());

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

pw.write(br.readLine());

pw.close();

br.close();

}

public static void main(String[] args) {

try {

new Client();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

本文出自 “超子” 博客