java socket简单实现
来源:互联网 发布:淘宝模特招聘兼职 编辑:程序博客网 时间:2024/05/29 10:42
一 什么是socket
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,另一种好理解的说法是网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。
二 四种类型socket
基于TCP:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。发送方和接收方的成对的两个socket之间必须建立连接,一旦建立连接,双方并可以互相发送和接收,根据协议可以传输大数据。
基于UDP:UDP是全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。是不可靠的通信协议。
基于rawip:rawip也是原始ip,是通过一个套接字(socket)直接操作IP报头的环境,是非连接,不可靠的数据传输。
基于链路层:为IS-IS协议提供的Socket接口,是非连接,不可靠通信服务。
在java基本上根据TCP/IP来socket编程。
三 原理
既然是通信就需要有两端,一个客户端Client,一个服务器端Server。首先Server先打开socket,并且监听某个端口直到有Clinet连接上,之后从Client中获取信息,也可以给Client发送信息,在结束通信后,关闭socket。
在Client端中向Server发送连接请求,当连接上Server后,可以向Server发送信息,也可以接收来自Server的信息。
以下为Server端代码:
import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {int port=1111;//用serversocket监听1111端口ServerSocket server = new ServerSocket(port);//接收socket请求Socket socket =server.accept();System.out.println("连接成功");//输入流InputStream inputStream= socket.getInputStream(); Reader reader = new InputStreamReader(socket.getInputStream()); char chars[] = new char[64]; int len; StringBuilder sb = new StringBuilder(); //读取数据 while ((len=reader.read(chars)) != -1) { sb.append(new String(chars, 0, len)); } System.out.println("from client: " + sb); //关闭输入流if (inputStream != null) {inputStream.close();}//关闭socketif (socket != null) {socket.close();}}}Client端代码:
import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.net.Socket;import java.net.UnknownHostException;public class Client {public static void main(String[] args) throws UnknownHostException, IOException { //要连接的服务器端IP地址和端口号Socket socket=new Socket("127.0.0.1", 1111);//输出流Writer out = new OutputStreamWriter(socket.getOutputStream()); //要发给服务器的信息out.write("Hello,my name is client."); //写完后要记得flush out.flush(); //关闭输出流if (out != null) {out.close();}//关闭socketif (socket != null) {socket.close();}}}以上为socket编程最简单的实现,接下来有空再更新Client、Server同时读写等的情况。
- java socket简单实现
- java Socket实现简单聊天室
- java Socket简单聊天实现
- Java实现简单的socket通信
- Java简单实现Socket非阻塞通信
- Java简单实现Socket非阻塞通信
- java实现简单的Socket通信
- 浅述JAVA Socket的简单实例实现
- java简单Socket聊天室程序的实现
- java实现最简单socket通讯
- java--实现简单的socket通信
- Java Socket实现简单的即时通信
- java 网络通信socket实现简单实例
- java多线程socket实现简单的聊天
- java socket (-) 简单socket
- java Socket简单聊天实现 —— 线程版实现
- 什么是socket?什么是socket的长、短连接?java如何简单实现socket客户端和服务器?
- 简单实现Socket通信
- [走火入魔失眠夜]浅谈管理软件信息安全,用户名、密码的加密解密【附C#配套加密解密源码】
- 服务器设计、线程、代理线程的学习
- RESTful API 设计指南
- TCP通信流程解析
- UDP内网穿透讲解及代码实现、P2P
- java socket简单实现
- html5 滑动事件
- 第一章:初始化分析
- phonegap/cordova学习建议
- STL学习笔记之容器--deque(一)
- 每天一道算法题(13)——使用递归颠倒栈
- 动态加载js的方法
- 小知识点
- 网狐棋牌经典版管理后台操作手册