一个简单的客户-服务器的Socket通信程序

网络编程实验 1、从键盘输入网址,读取网址内容,在显示器进行显示,并存储为文件test.html。 这里写代码片 2、TCP Socket编程实现服务器和客户端的交互: (1)服务器端先运行,利用循环时刻为客户端提供服务; (2)客户端与服务器接通后,从键盘上输入若干字符,传到服务器,服务器在控制台显示所收收到的数据,并向客户端反馈信息“I have received **”,此次通话结束; (3... 阅读详情
在本程序中,客户端从命令行输入一个半径值,并传送至服务器,服务器根据这个半径值计算出圆的面积发送给客户端。客户端可以继续输入半径值得到圆的面积,直到输入了bye,结束通信。

本程序仅仅支持一个客户端的连接,一对一模式。
Client.java
package com.leo.socketcom;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class Client {

    public static void main(String[] args) {
        try {
            //1.创建套接字,端口号为5500,连接到本机
            Socket connectToServer = new Socket("localhost",5500);
            //2.将输入流连接到socket上
            DataInputStream inFromServer = new DataInputStream(connectToServer.getInputStream());
            //3. 将输出流连接到socket上
            DataOutputStream outToServer = new DataOutputStream(connectToServer.getOutputStream());
            //4.输入半径数值发送到服务器,输入bye结束。
            System.out.println("输入半径数值发送到服务器,输入bye结束。");

            String outStr,inStr;
            boolean goon = true;
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
            while(goon){
                outStr = buf.readLine();
                //4.向服务器发送消息,消息值为半径。
                outToServer.writeUTF(outStr);
               //5.清空发送消息的缓冲区     
                outToServer.flush();
               //6.接受服务器发送的消息
                inStr = inFromServer.readUTF();
                if(!inStr.equals("bye")){
                    System.out.println("从服务器返回的结果是:"+inStr);
                }else
                    goon = false;
            }

            inFromServer.close();
            outToServer.close();
            connectToServer.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}


    

Server.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args) {
        try{
            System.out.println("等待连接");
            //1.创建服务器套接字
            ServerSocket serverSocket = new ServerSocket(5500);
            //2.侦听来自客户端的连接请求
            Socket connectFromClient = serverSocket.accept();
            System.out.println("连接请求来自:"+connectFromClient.getInetAddress().getHostAddress());

            DataInputStream inFromClient = new DataInputStream(connectFromClient.getInputStream());
            DataOutputStream outToClient = new DataOutputStream(connectFromClient.getOutputStream());

            String str;
            double radius, area;
            boolean goon = true;

            while(goon){
                //从socket中读取数据
                str = inFromClient.readUTF();
                if(!str.equals("bye")){
                    radius = Double.parseDouble(str);
                    System.out.println("接收到的半径值为:\t"+radius);
                    area = radius*radius*Math.PI;
                    str = Double.toString(area);
                    outToClient.writeUTF(str);
                    outToClient.flush();
                    System.out.println("圆的面积"+str+"已经发送");
                }else{
                    goon = false;
                    outToClient.writeUTF("bye");
                    outToClient.flush();
                }
            }
            inFromClient.close();
            outToClient.close();
            serverSocket.close();
            connectFromClient.close();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}



客户端运行图如下: 



服务器端运行图如下: 

从运行结果图上可以看出,在同一台PC上客户端应用和服务器应用建立的通信连接。


Socket通信实现服务器和客户端对话 广域网和局域网 介绍socket通信前我们先介绍一下广域网与局域网的概念。局域网简称LAN,是指在某一区域几台计算机组成的计算机组,局域网是封闭的,局域网经常采用共享信道,即共用同一条电缆。广域网简称WAN,是一种跨越大的,地域性的地区性网络集合广域网包含大大小小不同的子网,可以是局域网,也可以是小型的广域网。广域网为每个单元分配IP地址,局域网也会其单元分配IP地址,这两个IP地址互不干扰,一个... 阅读详情

相关推荐

自考JAVA语言实践试题

福大自考JAVA语言程序设计(一)实践试题

linux中线程求圆的面积,编写一个客户/服务器程序,服务器的功能是计算圆的面积。客户端将圆的半径发送给服务器端,服务器端计算得出的圆面积发送给客户端,并在客户端显示。...

packagework11;importjava.io.*;importjava.net.*;public classclient {staticSocketsocket;public static voidmain(String[] args)throwsUnknownHostException,IOException{socket=newSocket("127.0.0.1",20000);Da...

weixin_42491751的博客 416

socket通信源码

socket通信源码,其中详细并完整的写了相应的实现方法。

编写程序,循环接收用户从键盘输入多个字符串,直到输入“ end”时循环结束,并将所有 已输入的字符串按字典顺序倒序打印。

package com.heima.test;import java.util.Comparator; import java.util.Scanner; import java.util.TreeSet;public class Test4 { /** 编写程序,循环接收用户从键盘输入多个字符串,直到输入“ end”时循环结束,并将所有 已输入的字符串按字典顺

嘿啦啦与呼哈哈的童话 8577

MicroPython ubluetooth 库详细介绍

MicroPython的ubluetooth库为蓝牙通信提供了强大的支持,使得开发者能够在MicroPython环境下轻松实现蓝牙设备之间的通信。其中ubluetooth库为MicroPython提供了强大的蓝牙通信功能,使得开发者能够轻松地在各种支持MicroPython的硬件平台上实现蓝牙设备之间的通信。它提供了一系列的函数和类,用于实现蓝牙设备的扫描、连接、数据传输等功能。- 上述代码中,首先创建了一个蓝牙服务和一个特征,然后可以通过read和write函数读取和写入特征值。# 处理连接成功事件。

m0_46311182的博客 1762

保姆级教程:用K210麦克风阵列模块实现声源定位(附完整Python代码与坐标计算)

本教程详细介绍了如何使用K210麦克风阵列模块实现高精度声源定位,包括硬件连接、算法解析与实战代码。通过Python代码示例,展示了从原始数据获取到三维空间坐标计算的完整流程,适用于智能家居、机器人导航等场景。

weixin_42558093的博客 228

实验十 网络程序设计

一、实验目的1、掌握网络通信的基础知识及Java对网络通信的支持2、学习URL 和InetAddress类的应用3、掌握基于底层Scoket的有连接和无连接的网络通信方法二、实验内容1、客户端向服务器发送请求,而服务器将接收发送给它的请求并将其写入文件。完成客户端的步骤如下:(1) 创建一个具有服务器IP地址和端口号的Socket对象。 Socket soc=new Socket("localhost",4001);(2) 客户端接受输入。BufferedReader br=new Buffe

qq_61727355的博客 1016

基于ADS\HFSS\Matlab的平面带通发夹滤波器设计

写在最前面,前段时间完成了一个小项目,实现13.5~14GHz的带通滤波器,算是第一个微波项目,在老师、学长、各种大神的指点下,最终完成了指标,想来这段时间收获良多,想到老师教导的,有能力的话要尽可能帮助别人,以及网络上很少面向于小白的教程,于是决定把自己做这个小项目的经过,一些关键步骤,还有软件操作和公式讲解都发出来,供大家指正借鉴。由于我目前大三,刚学习电磁场、微波工程等等,技术实在有限,同时这样是我第一次发帖子,只能尽可能的将自己确认过正确的内容,步骤以及一些经验写出来,供大家借鉴。

likaifeng12138的博客 5219

简单socket通信,回显 服务器程序与客户端程序之间的通信。

前情了解:Socket 通信编程是一种基于网络的通信方式,允许不同主机上的程序通过网络进行数据交换。

m0_73763994的博客 692

php对接建行h5网页支付

php对接建行h5网页支付前言H5页面支付H5页面支付回调通知退款及其他的业务 前言 最近接到公司乙方要求,需要再支付上面增加建行的支付渠道。之前一直用的都是微信和支付宝这种第三方支付平台,银行直接对接比较少。没办法就只能上网搜索,搜索一番返现网上对接建行的资料比较少,没办法只好摸着石头过河,中间也借鉴了一些大佬的文章内容。 H5页面支付 根据建行的h5网页支付对接文档,还是可以看出是比较简单的。...

lihua100862的博客 5411

KEGG数据库与KAAS工具:基因功能注释的实用指南

本文提供了使用KEGG数据库与KAAS工具进行基因功能注释的完整实用指南。详细阐述了如何从准备基因或蛋白序列开始,通过KAAS服务器获取KEGG Orthology(KO)编号,并解读注释结果。文章进一步介绍了如何利用KOBAS工具进行通路富集分析,将定性观察转化为定量洞察,并分享了提高注释准确率、处理大数据集及使用API等避坑技巧与高阶方法,为基因组学、转录组学研究者奠定坚实的数据分析基础。

weixin_29292535的博客 390

简单的基于socket的客户端—服务器的通信程序

sys.argv[1],获取命令行的第一个参数(一般第零个为脚本名称),赋值给flag。如果值为server,启动服务端功能。

shuo_zhi的博客 301

《低功耗方法学》翻译——卷首语

低功耗设计方法学。

记录所学,分享知识,结识挚友 992

一个简单的 C++ 网络通信程序,它使用 Socket 编程实现客户端和服务器之间的通信

【代码】一个简单的 C++ 网络通信程序,它使用 Socket 编程实现客户端和服务器之间的通信。

m0_74288773的博客 540

【云原生之Docker实战】使用docker部署Monica个人开源CRM系统

【云原生之Docker实战】使用docker部署Monica个人开源CRM系统

jks212454的博客 2386

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

实现一个简单的TCP服务器客户端通信程序需要使用套接字(Socket)编程

实现多机之间的通信,本质上还是对文件的操作通常网络编程基于socket实现,套接字编程通信双方遵守统一的规则【协议–数据格式】,能够通过地址识别通信方【ip和端口】通信双方只需要同层协议相同【网络为了便于管理使用分层架构, 下层为上层提供服务,上层通过下层提供的SAP 使用服务】

weixin_52083155的博客 493

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

两个客户端通信的socket简单实现

实现两个客户端通过服务器来进行通信的小程序

lfj3974的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++ 简单的 Tcp 实现[socket] 客户端与客户端通信

<br />开发环境  Vs 2008  新建一个 win32 console  project <br /> <br />//  服务器端代码<br /><br />// Server.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "winsock2.h" #pragma comment(lib, "ws2_32.lib") #include <iost

天下无双 1万+

一个简单的服务器与客户端程序

利用linux系统IO、socket,实现服务器与客户端直接的通信

yk_ee的博客 5987

windows虚拟机linux服务器,windows客户端和linux虚拟机服务器实现简单socket通信

ubuntu命令行输入ifconfig查看ip服务器端代码#include #include #include #include #include #include #include int main(){//创建套接字int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//将套接字和IP、端口绑定struct sockaddr_in...

weixin_39574869的博客 771

基于tcp的简单socket通信

socket即ip+port,当然这是最直接的理解,网络的通信都离不开使用到socket,下面的聊天程序是基于tcp的简单通信过程,服务器端创建两个socket描述符,一个用于在服务器端监听,另一个用来接收客户端连接的请求。客户端使用connect函数向服务器发出连接请求,这里面包含了tcp的三次握手过程,连接完成之后就是cs间的相互通信了。 /*************************

xyang 1309

socket程序 java_Java做一个最简单的Socket通话程序

Java做一个最简单的Socket通话程序作者:未知文章来源:www.jspcn.net发布日期:2005年01月19日作者:小锋Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一。在Java中有一个专门的Java.net类库来管理网络编程的有关方法。下面先介绍在Java中怎样用socket进行客户与服务器通信。最后再介绍一个一个最简单的通话程序。一.怎样用socket进行...

weixin_36261385的博客 411

用 socket 通讯写出客户端和服务器端的通讯 , 要求客户发送数据后能够回显相同的数据

比较基础的一个服务端客户端互相通信的程序/** * @author john socket 的服务器端,接收到数据后打印到控制台 的数据 * */ public class ServiceSocket_1 { public static void main(String[] args) throws Exception { ServerSocket ss = new Serv...

火页的博客 2663

简单的Java Socket通话程序

简单的Java Socket通话程序 Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一。在Java中有一个专门的Java.net类库来管理网络编程的有关方法。 下面先介绍在Java中怎样用socket进行客户与服务器通信。最后再介绍一个一个最简单的通话程序。 1.怎样用socket进行客户与服务器通信 在Java中用socket进行客户/服务器之...

qiuyabing的专栏 225

java socket:客户端与服务器端通信

Socket:网络上两个程序通过一个双向的通信连接实现数据交换,连接的一段为一个socket,要实现两个程序的数据交换一般要一对socket。 这个定义参考自百度百科,我觉得说的还不错,另外,socket的英文有‘插口’的意思,其实也可以理解为程序的插口等等。 socket在实现程序通信方面具有重要意义,我看到它出现在c/c++、java、python、c#等诸多语言中,看来学什么语言都难逃此关。...

止水 734
上一篇: Android学习之BroadcastReceiver
下一篇: 搭建Tomcat服务器
熬夜不洗澡
博客等级 码龄16年 42粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值