【Java】TCP套接字编程
服务器
server.java
package socket;
import java.io.*;
import java.net.*;
public class server {
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
//创建一个ServerSocket在端口4700监听客户请求
server=new ServerSocket(7217);
System.out.println("服务器已打开!");
}catch(Exception e){
e.printStackTrace();
}
Socket socket=null;
try{
//使用accept()阻塞等待客户请求,有客户
socket=server.accept();//请求到来则产生一个Socket对象,并继续执行
}catch(Exception e){
e.printStackTrace();//出错,打印出错信息
}
//由Socket对象得到输入流,并构造相应的BufferedReader对象
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//从socket获取输入流并转换到输入流缓存,从这里可以读到从客户端发来的信息
//由Socket对象得到输出流,并构造PrintWriter对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//同理的,输出流也是一个缓存,所以下面发送的话,
//可能会有延迟的,要立即发送就调用flush方法,
//它会立即清空缓存并把信息发出去
//向客户端输出该字符串
os.println("来自服务器的消息!");
//刷新输出流,使Client马上收到该字符串
os.flush();
//在标准输出上打印从客户端读入的字符串
System.out.println("收到客户端的信息:"+is.readLine());
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
server.close(); //关闭ServerSocket
}catch(Exception e){
e.printStackTrace();//出错,打印出错信息
}
}
}
客户端
client.java
package socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class client {
public static void main(String[] args) {
try{
System.out.println("客户端已打开!");
Socket socket=new Socket("127.0.0.1",7217);//创建socket并连接本机的7217端口
PrintWriter os=new PrintWriter(socket.getOutputStream());//输出流,本机到服务器
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//输入流,服务器到本机
System.out.println("收到来自服务器的消息:"+is.readLine());
os.println("这是来自客户端的消息!");//发送消息
os.flush();//推送
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
}catch(Exception e){
e.printStackTrace();//出错,打印出错信息
}
}
}
运行效果
服务器输出:
服务器已打开!
收到客户端的信息:这是来自客户端的消息!
客户端输出:
客户端已打开!
收到来自服务器的消息:来自服务器的消息!
视频讲解
【Java】TCP套接字编程的更多相关文章
- 【UNIX网络编程(四)】TCP套接字编程具体分析
引言: 套接字编程事实上跟进程间通信有一定的相似性,可能也正由于此.stevens这位大神才会将套接字编程与进程间的通信都归为"网络编程",并分别写成了两本书<UNP1> ...
- UNP学习笔记1——基本TCP套接字编程
1 套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数.每个协议族都定义了自己的套接字结构.这些套接字的结构以sockaddr_开头,以每个协议族唯一的后缀名结尾. 1.1 I ...
- TCP套接字编程模型及实例
摘要: 本文讲述了TCP套接字编程模块,包括服务器端的创建套接字.绑定.监听.接受.读/写.终止连接,客户端的创建套接字.连接.读/写.终止连接.先给出实例,进而结合代码分析. PS:本文权当 ...
- 初探网络编程--TCP套接字编程演示
今天看了一下<计算机网络:自顶向下方法>,也就是计算机网络的教材的应用层一章,决定实现以下后面的Java C/S应用程序的例子,用来演示TCP和UDP套接字编程. 程序流程如下: 1.一台 ...
- 套接字编程相关函数(2:TCP套接字编程相关函数)
本文摘录自<UNIX网络编程 卷1>. 基本套接字函数 socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型.其定义如下: #in ...
- TCP套接字编程
一.套接字(socket)函数 图1给出了在一个TCP客户与服务器通信的流程.服务器首先启动,稍后某个客户启动,它试图连接到服务器.假设客户给服务器发送一个请求,服务器处理该请求,并且给客户发回一个相 ...
- 【UNIX网络编程(二)】基本TCP套接字编程函数
基于TCP客户/server程序的套接字函数图例如以下: 运行网络I/O.一个进程必须做的第一件事就是调用socket函数.指定期望的通信协议类型. #include <sys/socket.h ...
- <网络编程>基本TCP套接字编程
tcp提供了可靠传输,当tcp向另一端发送数据的时候,要求对端返回一个确认.如果没有接收到确认,tcp就重传数据并且等待更长时间,数次重传失败后,tcp才放弃. 建立一个tcp连接会发生如下事情: 服 ...
- unix网络编程——TCP套接字编程
TCP客户端和服务端所需的基本套接字.服务器先启动,之后的某个时刻客户端启动并试图连接到服务器.之后客户端向服务器发送请求,服务器处理请求,并给客户端一个响应.该过程一直持续下去,直到客户端关闭,给服 ...
- unix网络编程第四章----基于TCP套接字编程
为了执行网络I/O操作.进程必须做的第一件事情就是调用Socket函数.指定期待的通信协议 #include<sys/socket.h> int socket(int family,int ...
随机推荐
- ESP8266 wifi模块+CH340烧录板安装使用运行教程
硬件准备 ESP8266-01S 模块 USB转TTL烧录板(CH340) LED灯(建议使用3.3V LED) 220Ω电阻(LED限流) 面包板和跳线若干 我的是这样的不用接线,其他的参考 ESP ...
- ABAP配置:OY01 定义国家/地区
配置:OY01 定义国家/地区 事务代码:OY01 配置路径: SPRO-ABAP平台-常规设置-设置国家-定义国家/地区 配置路径截图: 配置描述: 国家是SAP里面一个非常重要的概念,SAP国家概 ...
- H5移动端开发注意事项
1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...
- 手把手教你编写自定义Categraf插件
本文分享自天翼云开发者社区<手把手教你编写自定义Categraf插件>,作者:任****佳 Categraf 是一个监控采集 Agent,类似 Telegraf.Grafana-Agent ...
- [记录点滴] 小心 Hadoop Speculative 调度策略
[记录点滴] 小心 Hadoop Speculative 调度策略 目录 [记录点滴] 小心 Hadoop Speculative 调度策略 [0x00] 摘要 [0x01] 缘由 [0x02] 代码 ...
- Yarn提交Flink任务参数介绍
一.参数介绍 作业模式:yarn-per-job 基本参数 描述 -ynm(Custom Yarnname) 自定义的Yarn名字 -yqu 指定Yarn队列名 -yn (TaskManager) ...
- Mac安装Hive
一.基础信息 下载地址:http://archive.apache.org/dist/hive/ 版本:hive3.1.1 依赖:hadoop3.2.1.mysql 解压目录:/Users/rob ...
- .Net Core 项目启动方式
本文篇幅较小,讲解如何通过命令行启动项目 接着上一章的Core WebApi(https://www.cnblogs.com/zousc/p/12420998.html),我们已经有了Hello这个控 ...
- 库卡机器人KR3R540电源模块常见故障维修解决方法
库卡机器人KR3R540电源模块的常见故障及维修解决方法包括: 电源模块无法正常启动:应检查电源模块的电源连接是否正常,以及电源开关是否开启.如果电源连接正常,但驱 ...
- 傻妞教程——对接QQ机器人go-cqhttp
原本我懒,用的傻妞QQbot一键安装版,docker的,最近有点问题,索性换了go-cqhttp 安装go-cqhttp: go-cqhttp项目地址:https://github.com/Mrs4s ...