[javaSE] 网络编程(TCP通信)
2016-05-07 12:35
387 查看
客户端A与服务端建立通信,服务端获取到客户端A的Socket对象,通过这个通路进行通信
客户端:
获取Socket对象,new出来,创建客户端的Socket服务,构造参数:Sting主机,int 端口
调用Socket对象的getOutputStream()方法,获取输出流OutputStream对象
调用OutputStream对象的write()方法,参数:byte[]字节数组
服务端:
获取ServerSocket对象,new出来,构造参数:int端口
调用ServerSocket对象的accept()方法,获取到Socket对象,阻塞式的
调用Socket对象的getInputStream()方法,获取输入流InputStream对象
读取输入流,数据量不大,不循环了直接调用InputStream对象的read()方法,参数:byte[]数组
调用Socket对象的getInetAddress()方法,获取到InetAddress对象
调用Socket对象的close()方法,关闭客户端
客户端:
获取Socket对象,new出来,创建客户端的Socket服务,构造参数:Sting主机,int 端口
调用Socket对象的getOutputStream()方法,获取输出流OutputStream对象
调用OutputStream对象的write()方法,参数:byte[]字节数组
import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; /** * 客户端 * @author taoshihan * */ public class Client { public static void main(String[] args) throws Exception, IOException { Socket socket=new Socket(InetAddress.getLocalHost(), 10003); OutputStream outputStream=socket.getOutputStream(); outputStream.write("Hello TCP".getBytes()); } }
服务端:
获取ServerSocket对象,new出来,构造参数:int端口
调用ServerSocket对象的accept()方法,获取到Socket对象,阻塞式的
调用Socket对象的getInputStream()方法,获取输入流InputStream对象
读取输入流,数据量不大,不循环了直接调用InputStream对象的read()方法,参数:byte[]数组
调用Socket对象的getInetAddress()方法,获取到InetAddress对象
调用Socket对象的close()方法,关闭客户端
import java.io.InputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /** * 服务端 * * @author taoshihan * */ public class Server { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(10003); while (true) { Socket socket = serverSocket.accept(); InputStream inputStream = socket.getInputStream(); byte[] buf = new byte[1024]; int len = inputStream.read(buf); InetAddress ip = socket.getInetAddress(); socket.close(); System.out.println("来自" + ip.getHostAddress() + "说:" + new String(buf, 0, len)); } } }
相关文章推荐
- linux网络编程实践
- window7下VMware网络设置-固定ip
- git 无法提交报错 - error: The requested URL returned error: 403 Forbidden while accessing https://github.c
- Ubuntu搭建Openstack平台(kilo)(五.neutron(二)网络节点与计算节点)
- 关于spring 转载自:http://www.codeceo.com/article/69-spring-interview-questions.html?ref=myread
- Android网络通信之Socket
- 什么是HTTP协议?
- Android网络编程之Apache接口
- 网络流二十四题之四 —— 魔术球问题(BALL)
- uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?
- TCP对SACK的处理以及乱序的处理细节
- android 抓包 使用 tcpdmp + Wireshark
- [Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)
- 联通光纤TCP劫持 - 基于策略的宽带信息推送系统
- HTTP必知必会——常见面试题总结
- TCP快速重传与快速恢复原理分析
- TCP协议选项
- poj1459——Power Network(网络流,超级源点、汇点)
- TCP/IP协议栈中的TimeStamp选项
- python-Scapy网络的掌控者