TCP Socket
1 .介绍TCP Socket
1) 两个Java应用程序可通过一个双向的网络连接实现数据交换,这个双向链路一端称为一个Socket。
2) Socket通常用来实现client-server连接
3) java.net包中定义的两个Socket和ServerDSocket,分别用来实现双向连接的client和server端
4) 建立连接时所需要的寻址信息为远程计算机的IP地址和端口(Port number)
2. TCP Socket通信模型
3. TCP Socket例子
1) 首先,我们创建一个TestServerScoket.java的类,这个类是服务器端的Socket.在这个Socket中,我们需要指定服务器对外提供的端口,这个端口会时刻在监听着是否有客户端连接上。同时,当服务端接收到客户端的请求后,需要给客户端一个响应,那就是调用Socket的accept()方法。当然,服务端要获取客户端的请求信息或发给客户端的信息,分别使用Socket提供的getInputStrean()和getOutInputStream()方法。
package com.owen.socket;import java.io.*;
import java.net.*;/*** Socket服务端* @author OwenWilliam 2016-7-24* @since* @version v1.0.0**/
public class TestSocketServer
{public static void main(String[] args){//输出流InputStream in = null;//输出流OutputStream out = null;try{//服务端提供的这个端口,给多个用户使用,所以客户端要想连接到这个服务,那么就要使用这个端口ServerSocket ss = new ServerSocket(6666);//等待客户端连接Socket socket = ss.accept();in = socket.getInputStream();out = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(out);DataInputStream dis = new DataInputStream(in);String s = null;//输入的字节按UTF编码if ((s = dis.readUTF()) != null){System.out.println(s);//输出客户端的请求地址System.out.println("from: " + socket.getInetAddress());//这里打印出来的是客户端的端口,这个端口客户端随机生成的System.out.println("Port: " + socket.getPort());}//向客户端以信息dos.writeUTF("hi,hello");dis.close();dos.close();socket.close();} catch (IOException e){e.printStackTrace();}}}
2) 其次,我们需要创建一个客户端的类TestSocketClient.java。在这个类里,我们需要指定连接哪个服务器,所以我们需要填写需要连接那个服务器的端口,还有就是本机的IP地址。当然服务端要连接我们客户端,我们客户端也需要提供端口,不过不需要我去定义,因为我们的电脑会自动生成端口,提供给服务端。
package com.owen.socket;import java.io.*;
import java.net.*;/*** Socket的客户端* @author OwenWilliam 2016-7-24* @since* @version v1.0.0**/
public class TestSocketClient
{public static void main(String[] args){//输入流InputStream is = null;//输出流OutputStream os = null;try{//指定请求的地址和端口号,这里的端口号是服务端提供的,作用是客户端与服务端连接//而对于客户端的端口,是本机自动生成的,服务端访问客户端的时候,就是用这个自动生成的。Socket socket = new Socket("localhost",6666);is = socket.getInputStream();os = socket.getOutputStream();DataInputStream dis = new DataInputStream(is);DataOutputStream dos = new DataOutputStream(os);//客户端请求服务端时的输出信息dos.writeUTF("hey");String s = null;//输入的字节按UTF编码if ((s = dis.readUTF()) != null ){System.out.println(s);dos.close();dis.close();socket.close();}} catch (IOException e){e.printStackTrace();}}}
3) 执行结果。
Client端:
服务端:
TCP Socket相关推荐
- C# Socket编程(5)使用TCP Socket
TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer) ...
- C# 的tcp Socket设置自定义超时时间
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...
- 转Go语言TCP Socket编程
授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...
- golang TCP Socket编程
Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分.在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均 ...
- java tcp read_【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...
书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子--反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: 书上的服务器 ...
- 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...
书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子--反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: 1 2 3 ...
- TCP socket编程记录(C语言)
最近使用到TCP的socket编程,记录一下思路. TCP Socket 服务器编程思路 0.初始化套接字库 1.创建套接字----------2个(服务器本身需要一个套接字,客户端要返回一个套接字) ...
- Go语言TCP Socket编程
2019独角兽企业重金招聘Python工程师标准>>> Go语言TCP Socket编程 Golang的 主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不 ...
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...
- TCP socket和web socket的区别
小编先习惯性的看了下某中文百科网站对Web Socket的介绍,觉得很囧.如果大家按照这个答案去参加BAT等互联网公司的前端开发面试,估计会被鄙视. 还是让我们阅读一些英文材料吧. 让我们直接看sta ...
最新文章
- 考研加油!考研的兄弟姐妹们!
- python 过滤相似图片_求教 python 网站爬虫过滤出图片 url 的问题
- Kubernetes 的2020年“野望”
- 《C++ Primer》13.1.4节练习
- python列表引用_Python列表(list)的方法调用
- Qt——P7 对象树
- Stereoscopic Player 1.7.4 (SSP) 加载字幕
- 深度学习 占用gpu内存 使用率为0_2020年深度学习最佳GPU一览,看看哪一款最适合你!...
- linq判断集合中相同元素个数_使用Linq获取集合的最后N个元素?
- 计算机输入码分类,汉字输入码种类数字编码.ppt
- 企业信息化到底是不是一把手工程
- PHP从入门到精通学习路线图
- HTML5个人学习笔记(一)
- Python爬虫实战一之使用Beautiful Soup抓取百度招聘信息并存储excel文件
- Activities介绍
- linux移植1.3寸oled屏幕,芯片SH1106
- 对于企业是云服务器划算还是自购服务器划算?
- 改善SilverLight安装体验(翻译)
- 【纯新手】小白的第一次面试经过(字节跳动-懂车帝)
- Wireshark抓包——TCP协议分析