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相关推荐

  1. C# Socket编程(5)使用TCP Socket

    TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer) ...

  2. C# 的tcp Socket设置自定义超时时间

    简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...

  3. 转Go语言TCP Socket编程

    授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...

  4. golang TCP Socket编程

    Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分.在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均 ...

  5. java tcp read_【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...

    书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子--反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: 书上的服务器 ...

  6. 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...

    书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子--反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: 1 2 3 ...

  7. TCP socket编程记录(C语言)

    最近使用到TCP的socket编程,记录一下思路. TCP Socket 服务器编程思路 0.初始化套接字库 1.创建套接字----------2个(服务器本身需要一个套接字,客户端要返回一个套接字) ...

  8. Go语言TCP Socket编程

    2019独角兽企业重金招聘Python工程师标准>>> Go语言TCP Socket编程 Golang的 主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不 ...

  9. java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...

  10. TCP socket和web socket的区别

    小编先习惯性的看了下某中文百科网站对Web Socket的介绍,觉得很囧.如果大家按照这个答案去参加BAT等互联网公司的前端开发面试,估计会被鄙视. 还是让我们阅读一些英文材料吧. 让我们直接看sta ...

最新文章

  1. 考研加油!考研的兄弟姐妹们!
  2. python 过滤相似图片_求教 python 网站爬虫过滤出图片 url 的问题
  3. Kubernetes 的2020年“野望”
  4. 《C++ Primer》13.1.4节练习
  5. python列表引用_Python列表(list)的方法调用
  6. Qt——P7 对象树
  7. Stereoscopic Player 1.7.4 (SSP) 加载字幕
  8. 深度学习 占用gpu内存 使用率为0_2020年深度学习最佳GPU一览,看看哪一款最适合你!...
  9. linq判断集合中相同元素个数_使用Linq获取集合的最后N个元素?
  10. 计算机输入码分类,汉字输入码种类数字编码.ppt
  11. 企业信息化到底是不是一把手工程
  12. PHP从入门到精通学习路线图
  13. HTML5个人学习笔记(一)
  14. Python爬虫实战一之使用Beautiful Soup抓取百度招聘信息并存储excel文件
  15. Activities介绍
  16. linux移植1.3寸oled屏幕,芯片SH1106
  17. 对于企业是云服务器划算还是自购服务器划算?
  18. 改善SilverLight安装体验(翻译)
  19. 【纯新手】小白的第一次面试经过(字节跳动-懂车帝)
  20. Wireshark抓包——TCP协议分析

热门文章

  1. 用数羊的方式来解释熵
  2. SparkSQL JSON数据操作(1.3-1.4)
  3. Orchard是如何运行的
  4. 两个rpm文件包存在互相依赖关系时,需要同时安装,解决办法如下
  5. Spring中事务管理的几种配法
  6. Ansible详解(十二)——Ansible Roles详解
  7. MySQL存储过程(一)——存储过程理论基础
  8. 虚拟机和电脑共享文件夹
  9. 静默安装Oracle11G
  10. HDU 3197 Game(树删边)