Socket编程

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(); 
        } 
    } 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章