你的位置:首页 > ASP.net教程

[ASP.net教程]Java TCP Socket编程模型


1、socket是网络编程的说法,既然是网络编程那么就有服务器端和客户端,首先创建两个类,TCPSocket.java用于当做服务器端,TCPClient.java用于当做客户端,

2、首先编写服务器端,在Java中提供java.net.ServerSocket类来当做网络服务器,构造函数需要一个网络接       口,以6666为例,代码如下:

Java代码 复制代码 收藏代码

  1. ServerSocket ss = new ServerSocket(6666);     

ServerSocket ss = new ServerSocket(6666);   

    此时,服务器端已经能够监听客户端请求。

3、编写客户端,在Java中提供java.net.Socket类来当做网络客户端,构造函数需要IP地址和网络接口,这里     的     接口应指明是哪个服务器的接口,在本例中,应该是上面服务器中指定的6666,代码如下:

Java代码 复制代码 收藏代码

  1. Socket s = new Socket("127.0.0.1", 6666);  

Socket s = new Socket("127.0.0.1", 6666);

    此时,客户端已经向服务器端发出连接请求。

4、客户端发出请求后,服务器端能够监听到,而要接受这个连接请求还要有如下代码:

Java代码 复制代码 收藏代码

  1. Socket s = ss.accept();  

Socket s = ss.accept();

    此时,服务器端和客户端已经能够连接上了。

 

服务器端完整代码:

Java代码 复制代码 收藏代码

  1. import java.net.*;  
  2.   
  3. public class TCPServer {  
  4.     public static void main(String[] args) throws Exception {  
  5.         ServerSocket ss = new ServerSocket(6666);  
  6.         Socket s = ss.accept();  
  7.         System.out.println("a client connect!");          
  8.     }  
  9. }  

import java.net.*;public class TCPServer {	public static void main(String[] args) throws Exception {		ServerSocket ss = new ServerSocket(6666);		Socket s = ss.accept();		System.out.println("a client connect!");			}}

 客户端完整代码:

Java代码 复制代码 收藏代码

  1. import java.net.*;  
  2.   
  3. public class TCPClient {  
  4.     public static void main(String[] args) throws Exception {  
  5.         Socket s = new Socket("127.0.0.1", 6666);  
  6.     }  
  7. }  

import java.net.*;public class TCPClient {	public static void main(String[] args) throws Exception {		Socket s = new Socket("127.0.0.1", 6666);	}}

 在运行本例时,应先运行服务器端,然后运行客户端。

当客户端发送一次连接请求后,服务器端接受到后,服务器就停止了,这不符合服务器接受多个用户的要求,所以更改服务器端代码:

Java代码 复制代码 收藏代码

  1. import java.net.*;  
  2.   
  3. public class TCPServer {  
  4.     public static void main(String[] args) throws Exception {  
  5.         ServerSocket ss = new ServerSocket(6666);  
  6.         while(true) {  
  7.             Socket s = ss.accept();  
  8.             System.out.println("a client connect!");  
  9.         }  
  10.           
  11.     }  
  12. }  

import java.net.*;public class TCPServer {	public static void main(String[] args) throws Exception {		ServerSocket ss = new ServerSocket(6666);		while(true) {			Socket s = ss.accept();			System.out.println("a client connect!");		}			}}

 accept()方法是阻塞式的方法,只要没有连接请求就会一直等下去,直到有客户端的连接请求发过来,接受之后经过while循环在等下一个请求,经过这个死循环就能实现接受多个用户的连接请求。

 

以下是用Java数据流由客户端向服务器端发送消息的超小型demo:

服务器端:

Java代码 复制代码 收藏代码

  1. import java.net.*;  
  2. import java.io.*;  
  3.   
  4. public class TCPServer {  
  5.     public static void main(String[] args) throws Exception {  
  6.         ServerSocket ss = new ServerSocket(6666);  
  7.         while(true) {  
  8.             Socket s = ss.accept();  
  9.             System.out.println("a client connect!");  
  10.             DataInputStream dis = new DataInputStream(s.getInputStream());  
  11.             System.out.println(dis.readUTF());  
  12.             dis.close();  
  13.             s.close();  
  14.         }  
  15.           
  16.     }  
  17. }  

import java.net.*;import java.io.*;public class TCPServer {	public static void main(String[] args) throws Exception {		ServerSocket ss = new ServerSocket(6666);		while(true) {			Socket s = ss.accept();			System.out.println("a client connect!");			DataInputStream dis = new DataInputStream(s.getInputStream());			System.out.println(dis.readUTF());			dis.close();			s.close();		}			}}

 客户端:

Java代码 复制代码 收藏代码

  1. import java.net.*;  
  2. import java.io.*;  
  3.   
  4. public class TCPClient {  
  5.     public static void main(String[] args) throws Exception {  
  6.         Socket s = new Socket("127.0.0.1", 6666);  
  7.         OutputStream os = s.getOutputStream();  
  8.         DataOutputStream dos = new DataOutputStream(os);  
  9.         Thread.sleep(30000);  
  10.         dos.writeUTF("hello server!");  
  11.         dos.flush();  
  12.         dos.close();  
  13.         s.close();  
  14.     }  
  15. }  

import java.net.*;import java.io.*;public class TCPClient {	public static void main(String[] args) throws Exception {		Socket s = new Socket("127.0.0.1", 6666);		OutputStream os = s.getOutputStream();		DataOutputStream dos = new DataOutputStream(os);		Thread.sleep(30000);		dos.writeUTF("hello server!");		dos.flush();		dos.close();		s.close();	}}

 

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

 

【java框架源码下载】