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();
}
}
}
}
欢迎大家多多提供有用的相关信息,一起交流。
![微笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)