客户端和服务器端的通信(Socket编程)

Socket编程

此篇博文的来源

  • 自己一直以为将网络编程这块的知识掌握的还可以了,今天突然有涉及客户端和服务器端的通信的这一块知识的应用,发现自己还不是那么的熟悉这一块,鼓捣了半天,因此就想通过此篇博文来记录一下,也希望能够给更对的朋友们一点帮助

废话不多说,直接上代码

客户端的代码如下

package org.wrh.socketserver;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class MyClient {

    public static void main(String[] args) throws Exception {
        //第一步:创建客户端Socket
        Socket s=new Socket("192.168.1.107",4567);
        //第二步:读取向服务器端发送的数据文件
        FileInputStream fis=new FileInputStream("d:\\100.txt");
        //第三步:获取Socket输出流
        OutputStream os=s.getOutputStream();

        byte[] buf=new byte[1024];
        int len;
        while((len=fis.read(buf))!=-1){
            os.write(buf, 0, len);

        }
        //刷新一下缓冲区的数据
        os.flush();
        //告诉服务器,我的数据已经发送完了
        s.shutdownOutput();

        //将服务器返回的数据读取出来
        InputStream is=s.getInputStream();
        byte[] buf_in=new byte[1024];
        int len_in=is.read(buf_in);
        System.out.println(new String(buf_in,0,len_in));

        fis.close();
        os.close();
        is.close();
        s.close();

    }

}

服务器端的代码如下

package org.wrh.socketserver;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {

    public static void main(String[] args) throws Exception {
        //第一步:建立服务器端Socket
        ServerSocket ss=new ServerSocket(4567);
        //第二步:获取客户端
        Socket socket=ss.accept();
        /*
         * 获取客户端的ip地址
         * */
        String ip=socket.getInetAddress().getHostAddress();
        System.out.println(ip+"....connected");
        //第三步:获取Socket的输入流,对客户端发送来的数据进行读取
        InputStream is=socket.getInputStream();

        /*
         *读取数据,并 将数据写入到文件中
         * */
        File dir=new File("d:\\wu");
        if(!dir.exists()){
            dir.mkdirs();

        }
        File file=new File(dir,ip+".txt");
        FileOutputStream fos=new FileOutputStream(file);

        byte[] buf=new byte[1024];
        int len=0;
        while((len=is.read(buf))!=-1){
            fos.write(buf, 0, len);

        }
        fos.flush();

        //给客户端一个反馈信息
        OutputStream os=socket.getOutputStream();
        os.write("收到数据".getBytes());

        //下面为关闭各种要关闭的资源
        fos.close();
        is.close();
        os.close();
        socket.close();
        ss.close();

    }

}

上面的代码的注释写的比较详细,这里就不在解释

总结

  • 这里要提醒大家的是,虽然上面的代码的流程很简单,但是如果大家不动手敲代码的话,是不太容易熟练掌握的,就像以前的我一样以为自己掌握了,最后当自己要应用的时候发现还是没有掌握

总之:动手实践动手实践动手实践动手实践,重要的话说四遍,说四遍,哈哈哈

时间: 2024-10-26 12:28:45

客户端和服务器端的通信(Socket编程)的相关文章

客户端到服务器端的通信过程及原理

学习任何东西,我们只要搞清楚其原理,就会触类旁通.现在结和我所学,我想总结一下客户端到服务器端的通信过程.只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题. 我们首先要了解一个概念性的词汇:Socket socket的英文原义是“孔”或“插座”.作为进程通信机制,取后一种意思.通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.(其实就是两个程序通信用的.)socket非常类似于电话的插座.以一个电话网为例.电话的通话双方相当于相互通信的2个

201506120856_《JavaScript——客户端与服务器端的通信》

在Web项目中,要实现客户端与服务端的交互,可通过cookie.隐藏框架.HTTP请求.LiveConnect请求和智能HTTP请求等方式实现, 一.             cookie cookie是第一个JavaScript可以利用的客户端-服务端之间的交互手段.浏览器向服务器发送请求时,为这个服务器存储的cookie会与其他信息一起发送到服务器.这使得JavaScript可以在客户端设置一个cookie,之后服务器端就能够读取它了. 1.    cookie的成分 名称——每一个cook

【windows socket编程+服务器客户端】

Windows Socket编程与服务器客户端示例 Winsock是 Windows下套接字标准. Socket套接字基于计算机网络,提供同一系统上不同进程或由局域网连接在一起的不同机器上的进程间通讯功能.如下图: 套接字通过IP地址,Port端口号标识,通过这个标识可以在整个局域网定位一个套接字,通过套接字进程便可以相互传输数据.如:进程A与进程B之间欲通过套接字通信,首先进程A创建一个有IP地址,端口号唯一标识的套接字,进程B同样创建一个有IP地址,端口号唯一标识的套接字,进程A,B便可以通

socket编程——TCP

上篇文章中对一些函数有了详细的介绍,本篇使用这些函数来实现基于TCP的socket编程 服务器程序端: #include <iostream> #include <unistd.h> #include <stdlib.h>                                                              #include <errno.h> #include <string> #include <st

Delphi的Socket编程步骤(repulish)

转贴自:http://topic.csdn.net/t/20010727/16/212155.html ClientSocket 和ServerSocket几个重要的属性:   1.client和server都有port属性,需要一致才能互相通信   2.client有Address属性,使用时填写对方(server)的IP地址       几个重要的事件:       client:    OnRead事件,当client受到冲击消息时在OnRead事件中可以获得server发送过来消息.  

基于C#的socket编程的TCP异步实现

一.摘要 本篇博文阐述基于TCP通信协议的异步实现. 二.实验平台 Visual Studio 2010 三.异步通信实现原理及常用方法 3.1 建立连接 在同步模式中,在服务器上使用Accept方法接入连接请求,而在客户端则使用Connect方法来连接服务器.相对地,在异步模式下,服务器可以使用BeginAccept方法和EndAccept方法来完成连接到客户端的任务,在客户端则通过BeginConnect方法和EndConnect方法来实现与服务器的连接. BeginAccept在异步方式下

TCP协议的客户端与服务器的通信过程

使用TCP时,客户端与服务器端的通信流程 服务器初始化1)调用socket,创建文件描述符fd2) 调用bind将fd与服务器的IP与PORT绑定3)调用listen将套接字设为监听模式,准备接收客户端连接请求4)调用accept等待并接收客户端的连接请求,建立好TCP连接后,该函数会返回一个新的已连接套接字newfd 建立连接1)客户端调用socket创建文件描述符2)调用connect,向服务器发送连接请求3)connect会发送一个请求SYN段并阻塞等待服务器应答(第一次握手)4)服务器收

Python 网络编程socket大全 用途---用于客户端和服务器端之间相互通讯

本章目录 一.什么是socket 二.为什么需要socket 三.socket的发展 四.python中的socket 五.基于TCP的socket 六.基于UDP的socket 六. 粘包问题详解 七.粘包的解决方案 八.socketserver实现并发通讯 **引入:为什么一定要先学习网络协议?** 之所以学习网络编程就是为了让我们的程序能够利用网络来传输数据,开发出C/S构架的应用程序 而网络的核心,就是协议,没有协议就没有互联网,我们要开发出C/S结构程序则必须遵循这些协议的标准! `就

网络编程 实现 客户端与服务器端的简单通信

六,代码演示实现客户端与服务器端的简单通信 代码中所使用的 IP号码,必须是本机自己的IP号码 (自行查询:cmd---ipconfig/all ) 1.[客户端向服务器端 发送一个整型数据,服务器端进行接收] (1)先写服务器端 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java