这个月公司带领我们学习了socket通信的基本方法。
我们在局域网(局域网相对于广域网来说的,广域网在广域网下也是一个局域网)里面,是通过什么来识别对方的呢?局域网下我们会被自动分配一个IP地址,而唯一的识别则是MAC地址,每一台机子的MAC地址都是不一样的。通常,我们通过IP地址则可以确定一个局域网内的某台主机,而要访问这台主机,则还需要端口号,即访问一台机器所必备的东西有:局域网IP地址,端口号。
通信是使用了传输层的TCP/IP协议簇,常用的有TCP/IP协议,UDP协议,SMTP等。
TCP/IP协议是一种面向连接的,可靠的网络传输协议。TCP/IP协议中拥有流量控制和拥塞控制机制,流量控制是通过滑动窗口实现的,而拥塞控制则是用慢开始,快重传等方式实现。TCP/IP协议的连接通常称为“三次握手”。首先由客户机发送给服务器一个SYN(建立连接的信号),这是第一次握手,然后服务器回传ACK(一个确认信号)+SYN,这是第二次握手,最后客户机再发送一个ACK,完成第三次握手,最后进入连接状态。
UDP是一种面向无连接的,高效而不可靠的传输协议。客服机只是负责发送数据接收数据,而服务器和客户机之间不存在任何连接形式,类似于发信息,不需要建立连接。
TCP程序模式:
UDP程序模式:
简单Server程序的实现
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class server { public String readString() { int i=0; String s=""; StringBuffer stb=new StringBuffer(); char c=0; try{ while(c!=13) { i=inpus.read(); c=(char)i; stb.append(c); } s=stb.toString().trim(); }catch(Exception e) { e.printStackTrace(); } return s; } public void setUpServer(int port) { try { ServerSocket server=new ServerSocket(port); Socket client=server.accept(); String info="welcome to check in!\r\nplease input the name!\r\n"; outpus.write(info.getBytes()); outpus.flush(); name=readString(); String s=""; while(!s.equals("bye")) { s=readString(); System.out.println(name+":"+s); String getS=name+":"+s+"\r\n"; outpus.write(getS.getBytes()); } client.close(); } catch (IOException e) { e.printStackTrace(); } } }
程序流程:
首先建立一个ServerSocket套接字,绑定端口(0-65535)部分端口被本地应用程序占用。然后等待客户端的接入,并得到相对于连入socket的一个输入输出流,Output写入数据到客户机,Input接受数据到服务器。注意:这是个单线程服务器,只能单个socket连入。
相对于代码而言,我对机制和算法的兴趣比较大,理论的理解显得更富有激情。
使用telnet客户端进行服务器的测试,今后会自己写client端。
相关推荐
【C#简单Socket通信】 在IT领域,网络通信是至关重要的一部分,而Socket作为网络通信的基础组件,被广泛应用于各种应用程序的开发中。本篇将详细探讨C#中的Socket通信,特别是单对多以及带有广播通信的实现方式。 ...
Java实现的简单Socket通信是网络编程中的基础技术,主要用于设备间的双向数据传输。在这个场景中,我们有两个窗口,一个作为服务器端,另一个作为客户端,它们通过TCP协议进行通信。TCP是一种面向连接的、可靠的传输...
"基于JAVA的简单Socket通信" 本文主要讨论了基于JAVA的简单Socket通信,介绍了Socket通信的原理和过程,并用JAVA编程实现了Socket通信,实现了服务器A和客户机B之间的一对一的通信。 什么是Socket Socket是指什么...
在这个“简单socket通信,学习使用”的项目中,我们可以看到一个基础的Socket通信示例,这对于初学者理解网络通信的基本原理非常有帮助。 首先,我们需要理解Socket的概念。Socket在计算机网络中是一种通信端点,它...
以上就是C++实现简单Socket通信的基本流程。在实际项目中,可能还需要处理错误、添加多线程支持、使用非阻塞I/O等高级特性。此外,对于客户端,其初始化过程与服务器类似,但不需要调用`bind()`和`listen()`,而是...
【Java实现基于TCP协议的简单Socket通信实例】 在Java中,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。Socket是Java中实现网络通信的基本接口,它允许两台计算机通过TCP/IP进行通信...
在这个“java 局域网简单socket通信,带界面”的项目中,我们主要涉及到以下几个关键知识点: 1. **Socket原理**:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是...
"简单socket通信"通常指的是建立一个基本的客户端-服务器模型,通过TCP或UDP协议进行数据传输。下面将详细阐述Socket的工作原理、TCP与UDP的区别以及如何使用Socket进行简单通信。 1. **Socket基本概念** - Socket...
以上就是JSwing实现简单Socket通信程序的关键知识点,通过这些技术,我们可以创建一个功能完善的登录注册群聊应用。实际开发过程中,还需要考虑安全性、性能优化以及用户体验等方面,以打造一个高效、安全且易于使用...
在本文中,我们将深入探讨如何使用C#编程语言与Windows Presentation Foundation(WPF)框架来构建一个简单的Socket通信示例。Socket通信是网络程序设计的基础,它允许不同计算机上的应用程序之间进行数据交换。C#...
以上就是Android平台上的简单Socket通信实例,包括数据的发送、接收、解析,以及UI的更新。实际项目中,可能还需要考虑网络状态的变化、重试机制、线程同步等问题,以确保通信的稳定性和用户体验。通过不断学习和...
本资源主要是用Qt5.9Creator写的一个socket通信的实例,采用的协议是TCP/IP,包括客户端和服务器。经过测试,在局域网和本机电脑上都可以正常通信,具体的教程在本人的博客地址里面:...
### Python 实现简单 Socket 通信方法详解 #### 一、引言 Socket 通信是网络编程中的基础之一,它允许不同计算机系统之间的进程通过网络进行通信。Python 提供了强大的库支持来简化这一过程,使得开发者能够快速地...
本压缩包中的"简单的Socket通信的实现"包含了Server端和Client端的示例代码,旨在帮助初学者理解Socket通信的基本原理和使用方法。 首先,我们要明白Socket通信的基本流程。当一个Client想要与Server建立连接时,它...
本项目是一个基于Socket通讯的例子源码,实现了一个简单的交互功能:安卓客户端发送“半径”值给服务端,服务器计算出圆面积,再发送回客户端。服务端是用的一个无限循环来等待客户端请求和消息,本项目有java服务端...
Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...
在本示例中,我们看到的是一个基于VS2013环境、使用C++编写的简单Socket通信程序,包含服务端(socketserver)和客户端(socketclient)。让我们深入探讨一下这个主题。 首先,Socket接口是操作系统提供的API,它...