`

socket编程(一)--简单的socket编程实例

阅读更多

需求描述:在客户端获取远程服务器某文件的内容

客户端程序如下:

package com.socket.clientsocket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Sclient {

	/**
	 * @param args
	 */
	
	protected BufferedReader socketReader;
	protected PrintWriter socketWriter;
	protected String hostIp;
	protected int hostPort;
	
	
	public Sclient(String ahostIp,int ahostPort){
		this.hostIp = ahostIp;
		this.hostPort = ahostPort;
		
	}
	public void setUpConnection(){
	
		try {
			//1.创建Socket,建立连接
			Socket socket = new Socket(hostIp,hostPort);
			//2.获取输入流和输出流,并进行封装
			socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			socketWriter = new PrintWriter(socket.getOutputStream());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public void tearDownConnection(){
		
		try {
			socketReader.close();
			socketWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
	//根据需求,对流进行处理
	public String getFile(String fileNameToGet){
		StringBuffer sb = new StringBuffer();
		socketWriter.println(fileNameToGet);
		socketWriter.flush();
		String line = null;
		try {
			while((line = socketReader.readLine()) != null){
				sb = sb.append(line + "\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sb.toString();
	}
	public static void main(String[] args) {
		//创建客户端
		Sclient client = new Sclient("198.27.0.166",8200);
		//建立连接
		client.setUpConnection();
		//需求操作
		String content = client.getFile("c:\\log.txt");
		//关闭连接
		client.tearDownConnection();
	}

}

 服务器端的程序如下:

package com.socket.serversocket;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Sserver {
	public static void main(String[] args){
		//创建服务器端
		Sserver s = new Sserver(3000);
		//监听连接
		s.acceptConnections();
	}
	int listenPort;
	public Sserver(int alistenPort){
		this.listenPort = alistenPort;
	}
	public void acceptConnections(){
		
		try {
			ServerSocket server = new ServerSocket(listenPort);
			Socket incomingConnection = null;
			while (true) {
                incomingConnection = server.accept();
                handleConnection(incomingConnection);
            }

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void handleConnection(Socket incomingConnection){
		
		try {
			//获取输入流跟输出流,并进行封装
			InputStream inputFromSocket = incomingConnection.getInputStream();
			OutputStream outputToSocket = incomingConnection.getOutputStream();
			BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket));
			//接收客户端讯息
			FileReader fileReader = new FileReader(new File(streamReader.readLine()));
			BufferedReader bufferedFileReader = new BufferedReader(fileReader);
			PrintWriter streamWriter = new PrintWriter(outputToSocket);
			String line = null;
			//将文件中的内容写入客户端
			while((line = bufferedFileReader.readLine()) != null){
				streamWriter.println(line);
			}
			
			streamReader.close();
			fileReader.close();
			streamWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


分享到:
评论

相关推荐

    华中科技大学-计算机通信与网络(Socket编程)-内含源文件和说明书.zip

    "模块一_Socket编程.doc"可能是一个详细的讲解文档,涵盖了Socket编程的基础概念、API用法、网络模型(如TCP/IP)以及可能的编程实例。这份文档可能会引导读者了解如何创建Socket,进行连接,发送和接收数据,以及...

    实战linux socket编程--示例源码.rar_C++ socket_linux 源码_socket 编程 linux_s

    本资源“实战linux socket编程--示例源码.rar”包含了一系列的C++ Socket编程实例,旨在帮助开发者深入理解和掌握Socket编程技术。 1. **Socket基本概念** - Socket是网络通信中的一个抽象概念,可以理解为两个...

    计算机网络实验SOCKET编程----WEB服务器[C#版本].

    计算机网络实验中的SOCKET编程是网络通信领域的重要学习内容,特别是在构建WEB服务器时,SOCKET接口扮演着核心角色。本实验以C#语言为开发工具,深入探讨如何使用SOCKET实现一个简单的WEB服务器。 首先,我们需要...

    Socket编程实例

    总之,这个C#的Socket编程实例展示了如何构建一个简单的聊天应用程序,涉及了Socket的基本操作,包括连接、监听、发送和接收数据。通过理解和实践这个示例,开发者可以深入理解网络编程的基础,并为开发更复杂的网络...

    Socket 编程实例

    Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,...

    SOCKET编程初步-IBM教程

    在IT领域,Socket编程是一种基础且重要的技术,它允许应用程序通过网络进行通信。IBM提供了专业的教程来帮助开发者理解和掌握Socket编程的基本概念和实践技巧。本篇将深入探讨Socket编程的核心知识点,以及IBM教程中...

    C++socket编程实例

    在IT领域,网络通信是不可或缺的一部分,而C++作为强大的编程语言,提供了丰富的库支持进行网络编程,其中就包括了socket编程。本篇将详细探讨C++中的socket编程,主要聚焦于TCP和UDP两种传输协议的实现。 首先,...

    CSharp-Socket-.rar_C#实例 socket_SOCKET编程实例_c# socket 实例_c# socket

    在标题中提到的"C#实例 socket SOCKET编程实例_c# socket 实例_c# socket",就是指使用C#语言实现Socket通信的各种示例代码。 1. **基本概念**: - **Socket类型**:C#中的Socket类有两种主要类型,即TCP...

    android socket 编程实例

    在Android平台上进行网络通信时,Socket编程是一种常见...总之,Android Socket编程实例涵盖了网络通信的基础知识,包括建立连接、传输数据和管理连接等。理解并掌握这些知识,将有助于你构建功能完善的网络通信应用。

    C# Socket多线程编程实例-聊天程序

    ### C#中的Socket编程实例——聊天程序 这个实例是基于客户端-服务器(C/S)架构的,包括服务器端和客户端两部分。服务器端负责监听和管理连接,客户端则用于交互。 #### 服务器端程序 1. 使用Visual Studio创建...

    tcl socket 编程实例

    ### TCL Socket 编程实例详解 #### 一、TCL Socket 概述 TCL(Tool Command Language)是一种脚本语言,广泛应用于快速原型开发、脚本编程等场景。TCL支持网络通信功能,其中最重要的一项是Socket编程,用于创建...

    c++ socket编程实例(服务端及客户端)

    总之,C++ Socket编程实例为我们展示了如何在C++中建立网络通信,它包括了服务器的监听、连接处理和数据交换,以及客户端的连接、数据发送和接收。通过学习和实践这些基本概念,开发者可以创建自己的网络应用,如...

    SOCKET实例---服务器端和客户端程序

    【SOCKET实例详解:服务器端与...这种基础的Socket编程模型可以作为进一步开发复杂网络应用的基础,如聊天室、文件传输等。在实际应用中,还需要考虑错误处理、多线程、并发连接等问题,以提高程序的稳定性和效率。

    Java网络编程(socket---网上广播).rar_Java 网络_Socket网络编程_java socket _ja

    本教程将深入探讨Java中的Socket编程,特别是如何实现网上广播功能。网上广播允许一个设备向网络上的所有设备发送数据,无需预先知道接收者的具体地址。 首先,让我们了解什么是Socket。Socket在计算机网络中是一种...

    android socket编程实例

    android socket编程实例

    Socket高级编程实例

    总之,Socket高级编程实例是一个非常有价值的资源,它可以帮助学习者巩固理论知识,提升实战技能,为成为专业的网络程序员奠定坚实基础。在学习过程中,不断实践和调试代码,理解网络通信的本质,将使你在网络编程...

    基于tcp的socket编程实例

    在这个"基于TCP的socket编程实例"中,我们将深入探讨如何使用socket API进行TCP通信,并通过"main"这个程序文件来理解其实现过程。 首先,TCP socket编程主要包括服务器端和客户端两部分。服务器端需要先启动,监听...

    c# socket编程实例

    ### C# Socket编程实例详解 #### 一、引言 Socket 编程是网络通信的基础技术之一,在 C# 中可以通过 System.Net.Sockets 命名空间提供的类来实现。本篇文章将通过一个具体的 C# Socket 编程实例来详细介绍 Socket ...

    C# SOCKET编程实例

    本篇将深入探讨C# Socket编程实例,特别是通过“飞鸽传书”这个案例,我们将会学习如何使用C#构建一个简单的文件传输应用。 首先,让我们了解Socket的基本概念。Socket是操作系统提供的接口,用于在两台计算机之间...

    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输示例代码.rar

    Netty 提供了一个高级的API,使得Socket编程更加简单,同时提高了性能和可扩展性。 1. **Netty服务端的创建**: - 首先,我们需要创建一个`ServerBootstrap`实例,它是Netty服务器的启动类。 - 接着,通过`group...

Global site tag (gtag.js) - Google Analytics