Socket编程练习(TCP)

学习初步练习基于c语言的socket编程 一、理解socket 套接字 应用进程跨网络的通信需要用到socket套接字实现,在TCP/IP协议中,“IP地址+TCP或UDP“唯一的标识了网络通信中的一个进程,这也就叫做一个套接字。 套接字产生 引入套接字就不得不介绍一下**系统调用**和**应用编程接口**。 当我们有一些特定的应用需要互联网的支持,但这些应用又不能直接使用已经标准化的互联网协议,那么我们应当做哪些工作? 大多数操作使用**系统调用**(system call)的机制在应用程序和操作系统之间传递控制权。 当某个 阅读详情

Server.java
==================================================
import java.net.*;
import java.io.*;

/**
 * 
 * 服务器端程序:
 *
 * 1. 监听一端口,等待客户接入;
 * 2. 一旦有客户接入,就构造一个Socket会话对象;
 * 3. 将这个会话交给线程处理,然后主程序继续监听。
 * 
 * @author OKJohn
 * @version 1.0
 */

public class Server extends ServerSocket {

    public Server(int serverPort) throws IOException {
         //用指定的端口构造一个ServerSocket
        super(serverPort); 
        try {
            while (true) {
                //监听一端口,等待客户接入
                Socket socket = accept();  
                //将会话交给线程处理
                new ServerThread(socket); 
            }
        } catch (IOException e) {
     e.printStackTrace();
 }
 finally {
            close();  //关闭监听端口
        }
    }

    // inner-class ServerThread
    class ServerThread extends Thread {
        private Socket socket;
        private BufferedReader in;
        private PrintWriter out;

        // Ready to conversation
        public ServerThread(Socket s) throws IOException {
            this.socket = s;
            // 构造该会话中的输入输出流
            in = new BufferedReader(new InputStreamReader(
           socket.getInputStream(), "GB2312"));
            out = new PrintWriter(socket.getOutputStream(), true);
            start();
        }

        // Execute conversation
        public void run() {
            try {

                // Communicate with client until "bye" received.
                while (true) {
                    // 通过输入流接收客户端信息
                    String line = in.readLine(); 
                    if ("bye".equals(line)) {  // 是否终止会话
                        break;
                    }
                    System.out.println("Received message:" + line);
                    String msg = "'" + line + "'has been accepted by server.";
                    // 通过输出流向客户端发送信息
                    out.println(msg);
                    out.flush();
                }

                out.close();
                in.close();
                socket.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    // main method
    public static void main(String[] args) throws IOException {
        new Server(2000);
    }
}

Client.java
================================================
import java.net.*;
import java.io.*;

/**
 * 
 * 客户端程序
 *
 * @author OKJohn
 * @version 1.0
 */

public class Client {

    private Socket socket;
    private BufferedReader reader;
    private PrintWriter writer;

    public Client(int serverPort) {
        try {

            // 向指定服务器(IP、端口)发出请求
            socket = new Socket("127.0.0.1", serverPort);

            // 用得到的会话对象构造输入输出流
            reader = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            writer = new PrintWriter(socket.getOutputStream());

            // Communicate with server until "bye" input.
            while (true) {
  
                // 接受统标准输入(键盘)输入的信息
               BufferedReader in = new BufferedReader(
                        new InputStreamReader(System.in));
                String message = in.readLine();
                // 将信息通过输出流发送给服务器
                writer.println(message);
                writer.flush();
                // 是否终止会话
                if ("bye".equals(message)) {
                    break;
                }
                // 通过输入流接收服务器信息
                String received = reader.readLine();
                System.out.println(received);
            }

            writer.close();
            reader.close();
            socket.close();

        } catch (UnknownHostException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new Client(2000);
    }
}

告别手动构建!用Jenkins的Generic Webhook Trigger插件搞定Gitee自动化部署(保姆级避坑指南) 本文详细介绍了如何使用Jenkins的Generic Webhook Trigger插件实现Gitee代码提交后的自动触发构建,包括插件安装、Webhook配置及常见问题解决方案。通过这一自动化部署方案,开发者可以显著提升CI/CD效率,避免手动构建的繁琐过程。 阅读详情

相关推荐

socket编程练习

可以在二块开发板直接运行,当然PC机也可以,记得修改好IP地址哦

Socket练习

Socket网络编程

mnimxq的博客 199

《实战 Linux Socket编程》练习代码

本人学习《实战 Linux Socket编程》练习的代码

Linux 练习十二 (Linux网络编程socket + 源码练习)

Linux网络编程Socket,TCP和UDP练习,包含源码

to_upper的博客 1382

Power BI实战:从数据清洗到可视化报表的完整流程

本文详细介绍了使用Power BI进行数据分析的完整流程,从数据获取、清洗整理到建模与可视化。通过实战案例,重点讲解了连接MySQL数据库、使用Power Query进行数据清洗、利用DAX创建核心度量值以及设计交互式报表的关键步骤与技巧,帮助用户高效完成从原始数据到专业可视化报表的转化,实现数据驱动决策。

weixin_29070721的博客 398

C# WinForm项目目录结构详解:从入门到精通(附常见问题解决方案)

本文详细解析了C# WinForm项目目录结构,从解决方案与项目基础结构到核心文件功能,再到关键目录解析,帮助开发者快速掌握WinForm项目组织方式。文章还提供了常见问题解决方案,如引用丢失、配置文件不生效等,是WinForm开发从入门到精通的实用指南。

dream的博客 647

python socket tcp编程_python socket编程练习(TCP)

python可以利用socket库实现套接字编程。套接字编程通常分为server端和client端,编程时一般是先server再client,这是最正常的逻辑,因为功能是由server提供的,client必须根据server提供的规则来建立连接和发送消息。server端的函数:函数描述s.bind(address)将套接字绑定到地址,在AF_INET下,以元组(host,port)的形式表示地址....

weixin_39624606的博客 181

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。 添加getchar();代码块解决无法查找或打开PDB文件。 错误提示: “Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Pro...

m0_46523403的博客 6420

Socket Tcp编程练习

Client 端: package com.mth.tcp3; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; /* * Clie

Enjoy life,Enjoy coding!! 869

ACS驱动器直线电机回零程序与误差补偿Buffer实战解析

本文深入解析了ACS驱动器控制直线电机时,实现高精度回零与误差补偿的完整实战流程。核心在于利用驱动器的D-Buffer功能,将激光干涉仪测量的误差数据导入补偿数组,通过ERRORMAP1D指令进行映射,从而实时修正定位误差,显著提升设备重复定位精度。文章详细拆解了回零程序逻辑、补偿参数设置及关键调试避坑指南。

649

西电2023秋季机器学习复习提纲

西电2023秋季机器学习复习提纲,希望对学弟学妹有帮助

weixin_62083045的博客 5673

Java基于TCP的Socket编程练习

环境:Notpad ++ 6.0 + JDK 6.0.31 问题:使用套接字编写客户—服务器程序,实现客户—服务器交互计算。客户将三角形3个边的长度发给服务器,服务器把计算出的三角形的面积返回给客户。   解决:利用Java的Socket编程。客户端发送数据,服务端接收数据,并进行相应的处理。 代码:  TcpServer.java:   import java.io.Buffere

DBA@Robin 5943

电源芯片TPS54560典型应用电路及设计详解

TPS54560 是一款配有集成型高侧 MOSFET 的 60V、5A DC-DC转换器,输入电压范围7-60V,输出电压可通过外部反馈电阻设置成略低于输入电压的任意值。**所以,**R5=31.25KΩ、R6:10KΩ(常用值)时,即可设置输出电压为 3.3V。**所以,**R5=140KΩ、R6:10KΩ(常用值)时,即可设置输出电压为12V。设计 TPS54560 的输出电压时,主要通过外部反馈电阻网络来设置输出电压。因此,输出 3.3V ,输入电压24V时推荐的电感值为 8µH 至 10µH。

weixin_42306872的博客 1万+

基于tcp的编程 java_Java基于TCP的Socket编程练习

Thinking in Unity3D关于 笔者在研究和使用Unity3D的过程中,获得了一些Unity3D方面的信息,同时也感叹Unity3D设计之精妙.不得不说,笔者最近几年的引擎 ...JavaScript基础——使用运算符JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值...

weixin_33132251的博客 184

AgentScope Java 2.0 项目实战:使用AgentScope Builder 构建企业级多租户 AI Agent 平台

本文基于 AgentScope Builder 源码深度分析,系统讲解多租户 AI Agent 构建平台的完整开发流程。涵盖 Spring Boot 3.x + WebFlux 后端架构、React 18 + TypeScript 前端实现、HarnessAgent 运行时、CompositeFilesystem 多租户隔离、SSE 流式对话、6 种 IM 渠道接入(钉钉/飞书/企微/GitHub/GitLab)、Git 与 Nacos 技能市场、JWT 认证、Docker Sandbox 隔离等核心技术。

program哲学 730

详解AUTOSAR:DaVinci Configurator配置CAN和UART数据协议解析器(RH850)(实战篇—1)

通过学习本篇博文项目,将会把所学的DaVinci Configurator知识系统串联起来。

不脱发的程序猿 2812

python socket编程练习(TCP)

python可以利用socket库实现套接字编程。套接字编程通常分为server端和client端,编程时一般是先server再client,这是最正常的逻辑,因为功能是由server提供的,client必须根据server提供的规则来建立连接和发送消息。server端的函数:函数描述s.bind(address)将套接字绑定到地址,在AF_INET下,以元组(ho...

weixin_33853794的博客 355

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java SE|基于Socket的TCP编程流程练习

客户端 四个基本步骤: 1.创建Socket 2.打开 连接到Socket的 输入流/出流: 3.按照协议对Socket进行 读/写 操纵 4.关闭Socket: 服务器端 四个基本步骤: 1.调用ServerSocket(int prot): 2.调用accept(): 3.调用该Socket类对象的getOutputStream和getInputStream(): 4.关闭ServerSocket和Socket对象: 练习代码如下: @Test ...

weixin_48118167的博客 891

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

网络编程练习-TCP socket

Server端: #include #include #include #include int main(int argc, char* argv[]){ int sockfd = socket(AF_INET, SOCK_STREAM, 0); if(!sockfd){ fprintf(stderr, "socket creat error. \n"); return

yejing's utopia 702

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java Socket编程之TCP练习

:在网络中复制文件 /** * 需求:通过网络复制一个文本文件 * @author Administrator * * 这次写在一起 两个类不单独写了 * */ import java.io.*; import java.net.*; class TextClient { public static void main(String[] args) throws Except

六道对穿肠的学习之旅 1409

Python网络编程socket练习(TCP)

服务器端:server.py# -*- coding: utf-8 -*- from socket import * HOST='' #''代表可以接受任何可用地址 PORT=5000 BUFF_SIZE=1024 ADDR=(HOST,PORT) serTCP=socket(AF_INET,SOCK_STREAM) serTCP.bind(ADDR) serTCP.listen(5) while

不变1024 632

层次化原理图设计实战:从模块拆分布局到ERC检查的完整指南

在电路设计领域,原理图设计是连接系统架构与硬件实现的关键环节。随着系统复杂度提升,传统平面化设计因局部功能不聚焦、复用性差、协作困难等痛点,难以满足工程效率要求。层次化原理图设计通过模块拆分、端口方向定义与总线规划,将系统功能树状化组织,使信号路径清晰可溯。其多通道设计机制支持重复模块的单一维护与自动同步,而基于层次的ERC检查策略则能高效定位跨层连接异常。在数采系统、图像处理等复杂硬件项目中,该设计方法不仅提升了阅读与调试效率,更让工程变更影响范围收敛至单个子图。本文从设计思路、模块边界划分、命名规范到编

weixin_34344403的博客 280
上一篇: TCP-IP学习笔记_卷1_第12章_多播和广播
下一篇: 在java程序中执行dos命令或运行其他程序
okjohn
博客等级 码龄23年 6粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值