WebService之Socket回顾
来源:互联网 发布:php国外空间 编辑:程序博客网 时间:2024/05/17 01:57
在学习Webservice之前回顾一下Socket:
服务端:Java提供了ServerSocket来对其进行支持。事实上当你创建该类的一个实例对象并提供一个端口资源,你就建立了一个固定位置可以让其他计算机来访问你了,如:ServerSocket server=new ServerSocket(7000); 这里需要注意的是端口的指定问题(另外端口号是从0到65535之间的,前1024个端口已经被TCP/IP作为保留端口,因此你所分配的端口只能是1024个之后的。 )
客户端:java同样提供了一个Socket对象来对其进行支持。只要客户方创建一个Socket的实例对象就可以了,如:
可是数据是如何传输的呢?
它提供了针对于字节流和Unicode的读和写,然后也提供了一个缓冲用于数据的读写,如:
首先贴出一个Socket通信的例子:
服务端:
package com.j2se.socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;public class MyServerSocket {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubint port = 8400;ServerSocket ss = new ServerSocket(port);System.out.println("等待中-----");while (true) {final Socket s = ss.accept();new Thread() {@Overridepublic void run() {try {System.out.println("连接成功...");BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream(),"utf-8"));String result = br.readLine();System.out.println("服务器接收客户端的消息是:" + result);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream(),"utf-8"));bw.write("你好啊,客户端....\r\n");bw.newLine();//换行符bw.flush();s.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}.start();}}}
客户端:
package com.j2se.socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;public class ClientSocket {/** * @param args */public static void main(String[] args) throws Exception {// TODO Auto-generated method stub// String ipAddr="127.0.0.1";InetAddress ipAddr = InetAddress.getLocalHost();int port = 8400;Socket client = new Socket(ipAddr, port);BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(), "utf-8"));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(), "utf-8"));// 客户端写数据bw.write("你好,服务器....");// 或者"你好,服务器....、\r\n"bw.newLine();// 换行符bw.flush();// 先要读数据,证明是否连接成功System.out.println("连接服务器返回去的消息:" + br.readLine());br.close();bw.close();}}
接下来的说明的问题是:
1、java编写的Socket服务端,其他语言如C#等语言写的socket客户端可以通信
2、 IE可以访问java编写的socket服务,应用层的IE可以访问传输层的Socket
大致过程是:IE属于应用层,使用的通过Http协议封装消息发送到服务端,然而服务端使用传输层的Socket编写的,因此,由于通信两端的服务协议不一致导致两者通信出现问题,这就产生了协议不匹配问题,那么如果需要服务正确收到客户端的消息就需要解析Http协议。所以我们可以断定Socket不适合推广,原因如下:
1、Socket和Http协议不匹配问题
2、如果服务端的Socket需要添加和修改多个参数信息等操作的时候,对于服务端也需要修改,因此这就照成不便。
所以WEB服务几乎都用Webservice。
- WebService之Socket回顾
- java回顾之socket通信
- 进程通信之 Socket (顺便回顾 TCP UDP)
- java socket (回顾)
- java socket内容回顾
- Java基础回顾---Socket
- socket多线程访问webservice
- socket与webservice
- Socket、webservice是什么?
- webservice、socket、http 、json
- Socket方式发布 WebService
- webservice 与socket
- Socket 与 Webservice
- webservice中使用socket
- WebService 与 Socket 区别
- Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)
- WebService性能测试回顾版-入门篇
- WebService性能测试回顾版-入门篇
- 孤儿进程与僵尸进程
- 基于左右值的无限分类算法
- iOS 常用数学函数
- C语言scanf函数详细解释
- 一切成功源于积累——20140902 市场洞察一切人性 Nothing learned, and everything forgotten-2
- WebService之Socket回顾
- UILabel 垂直方向顶端对齐
- springMVC js等文件找不到错误
- 蜘蛛蜘蛛啊
- 赋值运算符重载为什么要返回引用
- ASP.NET+JQuery+.Ashx实现+百度Echarts 实现动态柱状图数据图形报表的统计
- 搜索引擎之倒排索引1
- iOS绘图教程
- keil 报错“空间不够”分析