`
chentingk
  • 浏览: 19969 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

简单的socket通信

 
阅读更多



    这个月公司带领我们学习了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端。

  • 大小: 87.6 KB
  • 大小: 46.5 KB
  • 大小: 60.4 KB
分享到:
评论

相关推荐

    C#简单Socket通信

    【C#简单Socket通信】 在IT领域,网络通信是至关重要的一部分,而Socket作为网络通信的基础组件,被广泛应用于各种应用程序的开发中。本篇将详细探讨C#中的Socket通信,特别是单对多以及带有广播通信的实现方式。 ...

    java实现简单socket通信

    Java实现的简单Socket通信是网络编程中的基础技术,主要用于设备间的双向数据传输。在这个场景中,我们有两个窗口,一个作为服务器端,另一个作为客户端,它们通过TCP协议进行通信。TCP是一种面向连接的、可靠的传输...

    基于JAVA的简单Socket通信.pdf

    "基于JAVA的简单Socket通信" 本文主要讨论了基于JAVA的简单Socket通信,介绍了Socket通信的原理和过程,并用JAVA编程实现了Socket通信,实现了服务器A和客户机B之间的一对一的通信。 什么是Socket Socket是指什么...

    简单socket通信,学习使用

    在这个“简单socket通信,学习使用”的项目中,我们可以看到一个基础的Socket通信示例,这对于初学者理解网络通信的基本原理非常有帮助。 首先,我们需要理解Socket的概念。Socket在计算机网络中是一种通信端点,它...

    C++实现简单Socket通信

    以上就是C++实现简单Socket通信的基本流程。在实际项目中,可能还需要处理错误、添加多线程支持、使用非阻塞I/O等高级特性。此外,对于客户端,其初始化过程与服务器类似,但不需要调用`bind()`和`listen()`,而是...

    JAVA实现基于Tcp协议的简单Socket通信实例

    【Java实现基于TCP协议的简单Socket通信实例】 在Java中,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。Socket是Java中实现网络通信的基本接口,它允许两台计算机通过TCP/IP进行通信...

    java 局域网简单socket通信,带界面

    在这个“java 局域网简单socket通信,带界面”的项目中,我们主要涉及到以下几个关键知识点: 1. **Socket原理**:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是...

    简单socket通信

    "简单socket通信"通常指的是建立一个基本的客户端-服务器模型,通过TCP或UDP协议进行数据传输。下面将详细阐述Socket的工作原理、TCP与UDP的区别以及如何使用Socket进行简单通信。 1. **Socket基本概念** - Socket...

    JSwing实现简单socket通信程序(登录注册群聊)

    以上就是JSwing实现简单Socket通信程序的关键知识点,通过这些技术,我们可以创建一个功能完善的登录注册群聊应用。实际开发过程中,还需要考虑安全性、性能优化以及用户体验等方面,以打造一个高效、安全且易于使用...

    人工智能-项目实践-C#-基于C#与WPF开发的简单Socket通信示例.zip

    在本文中,我们将深入探讨如何使用C#编程语言与Windows Presentation Foundation(WPF)框架来构建一个简单的Socket通信示例。Socket通信是网络程序设计的基础,它允许不同计算机上的应用程序之间进行数据交换。C#...

    android 简明Socket通信实例

    以上就是Android平台上的简单Socket通信实例,包括数据的发送、接收、解析,以及UI的更新。实际项目中,可能还需要考虑网络状态的变化、重试机制、线程同步等问题,以确保通信的稳定性和用户体验。通过不断学习和...

    基于Qt5.9Creator的一个简单socket通信实例(C++语言,win7 64系统)

    本资源主要是用Qt5.9Creator写的一个socket通信的实例,采用的协议是TCP/IP,包括客户端和服务器。经过测试,在局域网和本机电脑上都可以正常通信,具体的教程在本人的博客地址里面:...

    python实现简单socket通信的方法

    ### Python 实现简单 Socket 通信方法详解 #### 一、引言 Socket 通信是网络编程中的基础之一,它允许不同计算机系统之间的进程通过网络进行通信。Python 提供了强大的库支持来简化这一过程,使得开发者能够快速地...

    简单的Socket通信的实现

    本压缩包中的"简单的Socket通信的实现"包含了Server端和Client端的示例代码,旨在帮助初学者理解Socket通信的基本原理和使用方法。 首先,我们要明白Socket通信的基本流程。当一个Client想要与Server建立连接时,它...

    Android例子源码简单Socket通信例子带服务端

    本项目是一个基于Socket通讯的例子源码,实现了一个简单的交互功能:安卓客户端发送“半径”值给服务端,服务器计算出圆面积,再发送回客户端。服务端是用的一个无限循环来等待客户端请求和消息,本项目有java服务端...

    Android中socket通信简单实现

    Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...

    socket简单通信程序 VS2013 C++

    在本示例中,我们看到的是一个基于VS2013环境、使用C++编写的简单Socket通信程序,包含服务端(socketserver)和客户端(socketclient)。让我们深入探讨一下这个主题。 首先,Socket接口是操作系统提供的API,它...

Global site tag (gtag.js) - Google Analytics