java Socket编程之TCP基本原理

news/2024/5/17 20:22:35 标签: Socket, java, TCP

通信原理:
1.服务器程序创建一个ServerSocket,调用accept方法等待客户机来连接。
2.客户端程序创建一个Socket,请求与服务器建立连接。
3.服务器接收客户机的连接请求,同时创建一个新的Socket与客户端建立连接。服务器继续等待新的请求。
关键类:
ServerSocket

方法返回值说明
accept()Socket等待客户机连接。若连接,则创建一套接字
isBound()boolean判断ServerSocket绑定状态
isClosed()boolean返回服务器套接字关闭状态
close()Void关闭服务器套接字
bind(SocketAddress)Void将ServerSocket绑定到特定的ip和端口号

TCP实现关键代码:
服务器端:

   private ServerSocket server;
   private BufferedReader reader;
   private Socket socket;
   server = new ServerSocket(8888);
   socket = server.accept();
   reader = new BufferedReader(new InputStreamReader(socket .getInputStream()));
   .... //输出等其他操作
   reader.close();
   socket.close();
   server.close();

客户端:

private Socket socket;
private PrintWriter writer
socket = new Socket(8888);
writer = newPrintWriter (socket .getOutputStream(),true)

思考:
对于两台计算机进行通信,可以将每台计算机部署服务端和客户端,从而实现信息发送和接收。上述代码是实现单向通信,若想实现双向通讯,需要同时拥有客户端和服务端的代码。


http://www.niftyadmin.cn/n/1647327.html

相关文章

Linux系统之下开启tomcat控制台,查看代码运行情况

方法: 进入tomcat安装文件夹,打开命令行。 如下操作: bin->startup.sh cd …/logs/ tail -f catalina.out

redis 之django-redis

redis之django-redis 自定义连接池 这种方式跟普通py文件操作redis一样,代码如下: views.py import redis from django.shortcuts import render,HttpResponse from utils.redis_pool import POOLdef index(request):conn redis.Redis(connection_poolP…

Linux与window路径差别(很容易入坑)

关键点:程序在自己win系统跑的好好的,部署到Linux系统之上就出现问题。首先检查路径问题; windows : 可以使用单斜杠和双斜杠 \\ ,都没有问题 Linux: 认准 /

Luogu P3398 仓鼠找sugar

传送门 我居然把swap写成了switch 如果路径相交,那么一定有LCA(a,b)在路径c,d上,或LCA(c,d)在路径a,b上 如果x在路径a,b上,需要满足条件: dpth[x] > dpth[LCA(a,b)] LCA(a,x)x 或 LCA(b,x)x 就这样,求出LCA后分别判…

Tomcat7优化方案

用了很久的Tomcat,没怎么看过它的优化,今天抽出时间研究了下,将内容记录下。 首先,是客户端访问tomcat的一个过程,如图所示: 图中间虚线框部分是 Apache基金下的服务器来做静态资源处理的,而这部…

git 工作中常用命令

git 工作中常用命令 git 命令: git init : 初始化 git add . :添加所有文件 git status :查看状态 若果是第一次会提示你输入你的 邮箱 和姓名: git commit -m "这个版本修改过的一些描述" :添加到他和远程 仓库 git log : 查看远…

Tomcat优化详细教程(转载)

Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器。而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化。 一、内存优化 默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的&…

flash 右键菜单隐藏与修改

来源:http://blog.sina.com.cn/s/blog_7264c84401014fmd.html import flash.ui.ContextMenu;import flash.ui.ContextMenuItem;import flash.events.ContextMenuEvent;import flash.net.URLRequest; var menu:ContextMenu new ContextMenu();var menuItem:ContextM…