Socket编程步骤


基于TCP的Socket编程步骤:


  

1)服务器程序编写:

    ①调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;

       ServerSocket server = new ServerSocket(port);

    ②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字;

       Socket  socket = server.accept(); 

    ③调用Socket类的getInputStream获取输入流,开始网络数据的接收;

       InputStream in = socket.getInputStream();

    ④最后关闭通信套接字。

       socket.close();



2)客户端程序编写:

    ①调用Socket()创建一个流套接字,并连接到服务器端; 

      Socket socket = new Socket(ip, port);

    ②调用Socket类的getOutputStream()获取输出流,开始网络数据的发送;

      OutputStream out = socket.getOutputStream();  

    ③调用flush方法强制把缓存中的输出流输出(并清空缓存区),确保数据的发送;

      out.flush();

    ④最后关闭通信套接字

      socket.close();

--------------------------------------------------------------------------------------------------

服务器例子:



package t;




import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.ServerSocket;
 import java.net.Socket;


 public class server {
   public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(8888);
Socket s=ss.accept();
InputStream is=s.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String str;
while((str=br.readLine())!=null) {
 System.out.println(str);
} 
br.close();
isr.close();
is.close();
s.close();
ss.close();
   }
 }

客户端例子:

//127.0.0.1是回送IP地址,测试用,指自己的主机。



package t;




import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.net.Socket;
 import java.net.UnknownHostException;


 public class user {
   public static void main(String[] args) throws UnknownHostException, IOException {
Socket s=new Socket("127.0.0.1",8888);
OutputStream os=s.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
PrintWriter pw=new PrintWriter(osw);
pw.println("hang1");
pw.println("hang2");
pw.flush();
pw.close();
osw.close();
os.close();
s.close();
   }
 }


先运行服务器例子,后运行客户端例子,然后在控制台输出:

hang1   

hang2




--------------------------------------------------------------------------------------------------







 

基于UDP的Socket编程步骤:



1)接收端程序编写:

    ①调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;

    ②调用DatagramPacket(byte[] buf, int length),建立一个字节数组以接收UDP包 ;

    ③调用DatagramSocket类的receive(),接收UDP包;

    ④最后关闭数据报套接字。

2)发送端程序编写:

    ①调用DatagramSocket()创建一个数据报套接字; 

    ②调用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port),建立要发送的UDP包;

    ③调用DatagramSocket类的send(),发送UDP包;

    ④最后关闭数据报套接字。