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)

  • 2010年07月01日 22:47
  • 87KB
  • 下载

java中socket套接字定义与使用

  • 2015年03月27日 13:28
  • 56KB
  • 下载

C++做HTTP服务应用 在Socket套接字中对HTTP头的处理

这些天都在弄个手机控制电脑应用..
  • phptits
  • phptits
  • 2014年08月18日 11:08
  • 1011

Java 套接字(socket)101

  • 2003年08月12日 00:00
  • 449KB
  • 下载

Python之BSD socket套接字编写回显客户端/服务器应用----《Python 网络编程攻略》

本例实现的功能:不管服务器从客户端收到什么输入,都会将其回显出来。 运行效果及方法如下: 如图,打开运行输入cmd,先运行服务器程序1_13a_echo_server.py,注意要输入参...

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

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

java TCP/IP Socket编程-----基本套接字-----获取本机地址-----笔记3

概述: 开始上硬菜的了,现在我们可以学习如何编写自己的套接字应用程序了。我们首先通过使用InetAddress类和SocketAddress类来示范Java应用程序如何识别网络主机。然后,举了一个使...

java中套接字socket

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

Java套接字(Socket)

选择下列任意链接开始学习。   我应该学习本教程吗? 第 1 页(共2 页) 套接字(socket)为两台计算机...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java Socket(套接字)及其应用
举报原因:
原因补充:

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