项目功能:

实现一次发送和接收,服务器接收客户端发送的内容并打印出来

用最通俗的语言讲解下,上图中大椭圆是服务器,A、C是客户端,当客户端和服务器通过socket建立连接后

1.两者之间形成一个通道,此时将要发送的内容放入流中:out.wirte(“字节数组")

2.服务器端使用客户端的对象得到socket s,s包括客户端的IP,端口,内容等属性

3.in来获取s中的内容,也就是客户端的out和服务器端的in一一对应

4.最后服务器将(根据客户端生成的)s关闭。只有服务器的套接字ss可选择性关闭

代码:

 /*
* 客户端:
* 通过查阅socket对象,发现TCP是面向连接的,所有对象建立时,就连接指定主机
* 服务端存在并连接成功,形成通路后,再该通道进行数据传输 步骤:
1.创建socket服务,指定目的主机和端口
*/
import java.io.*;
import java.net.*; class tcpClient
{
public static void main(String[] args) throws IOException{
//1.创建socket服务,指定目的主机和端口
Socket s =new Socket("192.168.1.103",10000); //为了发送数据,应获取socket流的输出流
OutputStream out = s.getOutputStream(); //将内容放到流中
out.write("tcp 我是客户端".getBytes()); s.close();
}
} /*
需求:定义端点接收数据并打印在控制台 服务端:
1.创建服务端serversocket对象并指定端口
当不指定时,使用connect方法指定
2. 获取连接过来的客户端对象
通过serversocket的accept方法等待,阻塞式,无连接一直等待
3.客户端如果发过来数据,服务端使用对应连接的读取流获取发过来数据
打印在服务台
4,关闭服务端(可选)
*/ class tcpServer
{
public static void main(String[] args) throws IOException{ //建立服务端socket服务,并监听端口
ServerSocket ss =new ServerSocket(10000); //通过accept方法获取链接过来的客户端对象(s中有内容,端口,IP属性)
Socket s = ss.accept();
//IP:
String ip =s.getInetAddress().getHostAddress();
System.out.println(ip+"...连接成功" );
//内容:获取客户端发送过来的数据,那么要使用客户端对象s
InputStream in = s.getInputStream(); byte[] buf =new byte[1024];
int len=in.read(buf);
String content = new String(buf,0,len);
System.out.println("内容:"+content ); s.close();//关闭客户端,服务器可以控制客户
ss.close();//关闭服务端,可选操作
}
}

毕向东tcp学习笔记1的更多相关文章

  1. 毕向东udp学习笔记1

    参看了毕向东老师的视频教程,准备直接用EditPlus记事本来直接敲Java代码,好好学习一下udp部分,GUI部分,线程部分,加油 项目功能: 实现udp简单的发送接收功能. 当使用EditPlus ...

  2. 毕向东udp学习笔记3多线程聊天

    项目功能: 实现了多线程下的发送接收,比较好 希望可以加入GUI,类似聊天软件一样,有一个消息输入框,捕获输入消息,作为发送线程 有一个显示消息框,接收消息并显示,作为接收线程 不知道的是,当在线程中 ...

  3. 毕向东udp学习笔记2

    项目功能:  发送端读取控制台输入,然后udp发送 接收端一直接收,直到输入为886 相对于笔记1,修改了发送端代码,实现发送控制台的内容,接收端循环接收,当输入886时,停止发送 发送端: impo ...

  4. freemodbus modbus TCP 学习笔记

    1.前言     使用modbus有些时间了,期间使用过modbus RTU也使用过modbus TCP,通过博文和大家分享一些MODBUS TCP的东西.在嵌入式中实现TCP就需要借助一个以太网协议 ...

  5. TCP学习笔记

    TCP/IP 协议分层模型 TCP/IP 协议族按层次分别分为以下 4 层:应用层.传输层.网络层和数据链路层.层次化之后,每个层级只需要考虑自己的任务就可以了,不再需要弄清其他层级的功能了. TCP ...

  6. EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO

    0 前言     本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机. 在该从机中定义了线圈寄存器.当中线圈寄存器地址较低的4位和EasyARM的P2 ...

  7. uIP学习笔记

    uIP学习笔记 从零开始使用uIP freemodbus modbus TCP 学习笔记

  8. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  9. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

随机推荐

  1. linux 驱动入门6

    看/sys目录经常看到bus device driver class. 这也是网上大量说的驱动驱动模型.这些的关系得熟悉得明白吧.是的.今天我先不整他们的关系.先逐个击破,然后再统一来理清楚他们之间的 ...

  2. ios 添加PCH文件

  3. GoEasy消息推送

    1. 从GoEasy获取appkey appkey是验证用户的有效性的唯一标识. 注册账号. GoEasy官网:https://goeasy.io 用注册好的账号登录到GoEasy的后台管理系统,创建 ...

  4. STM32的USART DMA传输(转)

    源:STM32的USART DMA传输 问题描述: 我有一个需求,AD采得一定数目的数据之后,由串口DMA发出,由于AD使用双缓冲,所以每次开始DMA的时候都需要重新设置开始的内存地址以及传输的数目( ...

  5. Go的pprof使用

    go中有pprof包来做代码的性能监控,在两个地方有包: net/http/pprof runtime/pprof 其实net/http/pprof中只是使用runtime/pprof包来进行封装了一 ...

  6. iOS开发——生成条形码,二维码

    - (void)viewDidLoad { [super viewDidLoad]; self.imageView.image = [self generateBarCode:@"15248 ...

  7. [MySQL]mysql指定路径启动

    /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/var/lib/mysql --pid-fil ...

  8. mysql 常用指令

    修改表的字符集 88down voteaccepted If you want to change the table default character set and all character ...

  9. Android布局及属性归总(查询用)

    常见布局 LinearLayout    线性布局        子元素任意,组织成一个单一的水平或垂直行,默认为水平方向TableLayout    表格布局        子元素为<Tabl ...

  10. Python常见数据结构整理

    Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) 序列中的每个元素都有自己的编 ...