Java网络编程笔记4

Socket和ServerSocket,网络编程可以分为创建Socket、打开连接Socket的输入流和输出流,对Socket进行编程,关闭Socket。

创建Socket


一个功能齐全的Socket的工作过程包含以下四个步骤:

1、创建Socket。

2、打开连接到Socket的输入/输出流。

3、按照一定的协议对Socket进行读/写操作。

4、关闭Socket


在java.net包中,定义了Socket和ServerSocket两个类,类Socket表示客户端或者服务器Socket连接的两端。

类Socket中构造方法如下:

Socket(inetAddress address,int port)

Socket(inetAddress address,int port,boolean stream)

Socket(String host,int port)

Socket(String host,int port,boolean stream)

Socket(SocketImp impl)

Socket(String host,int port,inetAddress localAddr,int localport)

Socket(inetAddress address,int port,inetAddress localAddr,int localport)

参数address表示IP地址,host表示主机名,port表示端口号,stream用于指明Socket是流还是数据报,localPort表示本地主机的端口号,localAddr是本地及其地址,impl是Socket的父类。

ServerSocket中的构造方法如下:

ServerSocket(int port)

ServerSocket(int port,int backlog)

ServerSocket(int port,int backlog,InetAddress bindAddr)

参数bindAddr表示本机地址。


Socket和ServerSocket类库都位于java.net包中,ServerSocket用于服务器端,Socket是建立网络连接时使用的。连接成功后会在两端产生一个Socket实例,通过这Socket实例,可以完成所需的会话。

Socket常用的方法有Accept方法,主要用于产生“阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。getInputStream方法,用于获取网络连接输入,返回一个InputStream对象的实例。getOutputStream方法,获取OutputStream实例。


参看客户端与服务器通信:

服务端:

<span style="font-size:18px;">public class Server {

	public static void main(String[] args) {
		ServerSocket ss;
		try {
			ss = new ServerSocket(30000);
			while(true){
				Socket socket=ss.accept();
				OutputStream outputStream=socket.getOutputStream();
				InputStream inputStream=socket.getInputStream();
				BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
				String request=br.readLine();
				System.out.println(request);
				socket.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}</span>

客户端:

<span style="font-size:18px;">public class Client {

	public static void main(String[] args) {
		try {
			Socket socket=new Socket("192.168.120.112",30000);
			OutputStream outputStream=socket.getOutputStream();
			InputStream inputStream=socket.getInputStream();	
			PrintStream printStream=new PrintStream(outputStream);
			printStream.print("Client--->");
			socket.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}</span>



转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42651911    情绪控_ 



©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页