java Socket(套接字)及其应用

原创 2015年11月19日 20:36:16

  Socket可以分为两种:面向连接的Socket通信协议(TCP,Transmission Control Protocol,传输控制协议)和面向无连接的Socket通信协议(UDP,User Dategram protocol,用户数据传输)。任何一个Socket都是由IP地址和端口号唯一确定的。

   下面就是一个Socket应用实例实现哭护短和服务器端的通信。

package lianxi_Socket;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/*
 * 服务端
 * 用Socket实现客户端很服务端的通信,要求客户发送数据后能够回显一样的数据。
 * Socket的生命周期:
 * 		打开Socket、使用Socket手法数据和关闭Socket
 * ServerSocket方法:
 * 		public ServerSocket(int port):创建绑定到特定端口的服务器套接字,
 * 									端口 0 在所有空闲端口上创建套接字
 * 
 * 打印流的特点:
 * 		A:只有写数据的,没有读取数据,只能操作目的地,不能操作数据源
 * 		B:可以操作任意类型的数据
 * 		C:如果启动了自动刷新,能共自动刷新
 * 		D:该流是可以直接操作文本文件的
 */
public class Server {
	public static void main(String[] args) {
		
		//创建读数据对象并初始化
		BufferedReader br = null;
		
		//创建写数据对象并初始化,PrintWriter是打印流
		PrintWriter pw= null;
		
		try {
			
			//创建绑定到特定端口的服务器套接字
			ServerSocket server = new ServerSocket(2000);
			
			//套接字的接受
			Socket socket = server.accept();
			
			//获取输入流
			br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			//获取输出流
			pw = new PrintWriter(socket.getOutputStream(),true);
			
			//获取接受的数据
			String s = br.readLine();
			
			//发送相同的数据给客户端
			pw.println(s);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				br.close();
				pw.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
	}
}

  

创建一个Client.java的客户端程序:

package lianxi_Socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/*
 * 	用户端
 * 
 */
public class Client {
	public static void main(String[] args) {
		//创建读数据对象并初始化
		BufferedReader br = null;
				
		//创建写数据对象并初始化,PrintWriter是打印流
		PrintWriter pw= null;
		
		try {
			Socket socket= new Socket("localhost",2000);
			
			//获取输入流与输出流
			br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			pw= new PrintWriter(socket.getOutputStream(),true);
			
			//向服务器发送数据
			pw.println("hello");
			String s = null;
			while(true){
				s = br.readLine();
				if(s!=null){
					break;
				}
			}
			System.out.println(s);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				br.close();
				pw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
     欢迎大家多多提供有用的相关信息,一起交流。微笑



版权声明:本文为博主原创文章,未经博主允许不得转载。

java中套接字socket

餐前甜点 Unix的输入输出(IO)系统遵循Open-Read-Write-Close这样的操作范本。当一个用户进程进行IO操作之前,它需要调用Open来指定并获取待操作文件或设备读取或写入的权限。...
  • uniquewonderq
  • uniquewonderq
  • 2015年06月13日 22:18
  • 935

Java套接字socket的使用

在JAVA网络程序中,客户端只要符合连接的通讯协议,那么服务器端都可以进行接收。 ServerSocket类主要用在服务端程序的开发上,用于接收客户端的链接请求: 实例:建...
  • Anny_Lin
  • Anny_Lin
  • 2015年05月30日 15:41
  • 998

Java套接字Socket编程

Java套接字编程:网络编程基本模型就客户端到服务器的模型,也就是我们常见的C/S模型。简单的说就是两个进程间相互通信的过程。即通信双方一方作为服务器等待客户端提出请求并给以回应,另一方作为客户端向服...
  • llping2010
  • llping2010
  • 2013年08月16日 17:31
  • 2569

套接字—Socket

网络编程就不得不提大名鼎鼎的套接字—Socket一,什么是Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。Socket的英文原意是“插座...
  • l953972252
  • l953972252
  • 2016年06月02日 20:51
  • 5027

应用层-套接字(Socket)和应用程序的关系

1.系统调用       大多数操作系统使用系统调用(system call)的机制在应用程序和操作系统之间传递控制权。对程序员来说,每一个系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将...
  • lumengabc
  • lumengabc
  • 2013年12月09日 10:50
  • 1879

Java 套接字

套接字(socket)为两台计算机之间的通信提供了一种机制,在 James Gosling 注意到 Java 语言之前,套接字就早已赫赫有名。该语言只是让您不必了解底层操作系统的细节就能有效地使用套接...
  • carolzhang8406
  • carolzhang8406
  • 2011年09月13日 22:29
  • 16487

套接字原理----socket

运行在不同机器上的进程彼此通过向套接字发送报文来进行通信。每个进程好比是一座房子,进程的套接字就好比是一个门。套接字是应用进程和TCP之间的门,应用程序开发者可以控制套接字的应用层那一侧所有的东西,但...
  • Hearthougan
  • Hearthougan
  • 2016年04月28日 17:19
  • 8467

Java Socket(套接字)编程、TCP和UDP通信过程详解

网路上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端被称为一个Socket。Socket也被称为套接字,可以用来实现不同虚拟机或不同计算机之间的通信。在Java语言中,Socket...
  • Dove_Knowledge
  • Dove_Knowledge
  • 2017年05月04日 16:35
  • 481

Socket套接字学习(一)

1.套接字(socket)       一个完整的网络应用程序包括客户端和服务器两个部分。网间通信进程需要由两个进程组成,并且只能用同一种协议。也就是说,不能在通信的一端使用TCP协议,而另一端则用U...
  • cxh342968816
  • cxh342968816
  • 2011年04月20日 20:50
  • 13967

MFC:异步套接字编程举例—网络聊天室程序

网络聊天室程序(MFC:利用win32的扩展函数): int WSAStartup(   WORD wVersionRequested,   LPWSADATA lpWSAData ); 一...
  • u010002704
  • u010002704
  • 2014年10月11日 14:04
  • 1388
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java Socket(套接字)及其应用
举报原因:
原因补充:

(最多只允许输入30个字)