`
andesen
  • 浏览: 6656 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

socket send receive

    博客分类:
  • Java
 
阅读更多
	client
	public void createConnection() throws UnknownHostException, RefusedException, SocketTimeoutException
	{
		try {
			socket = new Socket();
			SocketAddress address =new  InetSocketAddress(this.hostUri, hostPort);
			socket.connect(address, 5000);
			logger.info("Socket server "+hostUri+" is connected");
		}catch (UnknownHostException e) {
			e.printStackTrace();
			throw new UnknownHostException();
		}catch(SocketTimeoutException e)
		{
			e.printStackTrace();
			throw new SocketTimeoutException();
		}
		catch (IOException e) {
			e.printStackTrace();
			throw new RefusedException();
		}
	}
	public boolean send()throws UnknownHostException,RefusedException, SocketTimeoutException ,SendException 
	{
		boolean result = false;
		createConnection();
		writer = getWriter();
		reader = getReader();
		try {
			writer.writeUTF(fileName);
			writer.flush();
			writer.writeLong(size);
			writer.flush();
			write(writer, reader);
			writer.flush();
			
			BufferedReader r = new BufferedReader(new InputStreamReader(
					socket.getInputStream()));
			String line="";
			while (true) {
				line = r.readLine();
				if (line.equals("End"))
				{
					result =true;
					break;
				}
			}
		}
		catch (IOException e) {
			e.printStackTrace();
			throw new SendException();
		}finally
		{
			close();
		}
		return result;
	}
	
	protected void write(DataOutputStream dos,DataInputStream dis) throws IOException
	{
		byte []  buf  =new byte [2048];
		int read = 0;
		while((read=dis.read(buf))!=-1)
		{
			dos.write(buf,0,read);
		}
	}
	
	
	protected DataOutputStream getWriter()
	{
		try {
			writer = new DataOutputStream(socket.getOutputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return this.writer;
	}
	protected DataInputStream getReader()
	{
		return this.reader;
	}
	
	protected void close()  {
		try {
			reader.close();
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
server
public void run() {
			String filePath="";
			try {
				dis = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
				String fileName = dis.readUTF();
				if(fileName.toLowerCase().indexOf(".jar")>0)
				{
					filePath=jarUploadPath+"//"+ fileName;
				}else
				{
					filePath=xmlUploadPath+"//"+ fileName;
				}
				Long lth = dis.readLong();
				File file = new File(filePath);
				dos = new DataOutputStream(new FileOutputStream(file));
				byte[] buf = new byte[1024];
				int read = 0;
				long tmp = 0;
				log.info("正在接收文件:"+filePath+",大小:"+lth+"kb");
				while ((read = dis.read(buf)) != -1) {
					dos.write(buf, 0, read);
					tmp+=read;
					if(lth==tmp)
					{
						break;
					}
				}
				PrintWriter pw  = new PrintWriter(socket.getOutputStream());
				log.info("文件接收完成:"+filePath);
				pw.write("End");
				pw.flush();
			} catch (IOException e) {
				log.error("文件接收错误:"+filePath);
				e.printStackTrace();
			} finally {
				try {
					dis.close();
					dos.flush();
					dos.close();
					socket.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		} 
 
分享到:
评论

相关推荐

    Socket Send and Receive

    ### Socket中的Send与Receive函数详解 在网络编程领域中,数据的发送与接收是核心操作之一。在本篇文章中,我们将重点探讨如何通过`send`和`recv`这两个基础函数来进行数据传输,虽然也有如Winsock2提供的`WSASend`...

    TDC_SOCKET_Send&Receive.zip_TDC SOCKET_socket 重连_socket断线重连_数据通讯

    本压缩包"**TDC_SOCKET_Send&Receive.zip**"包含的资源是关于TDC(可能是Time-Domain Convolutions或某种特定设备的简称)与个人计算机(PC)之间通过以太网进行的SOCKET通信的测试程序。该程序具有一个显著的特点,...

    c++/MFC 极为简单的socket实例

    4. 数据交换:服务端和客户端都使用Send()和Receive()函数进行数据传输。Send()用于发送字符串或其他二进制数据,Receive()用于接收数据。 5. 错误处理:无论在服务端还是客户端,都需要适当的错误处理机制,例如...

    基于socket的简单通讯工具

    简单的C#Socket工具,Socket.Connect 方法:建立到远程设备的连接 public void Connect(EndPoint remoteEP)(有重载方法) Socket.Send 方法:从数据中的指示位置开始将数据发送到连接的 Socket。 public int Send...

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    3. 发送数据:`socket.Send(Encoding.ASCII.GetBytes("要发送的数据"));` 4. 接收数据:`byte[] buffer = new byte[1024]; int received = socket.Receive(buffer); string data = Encoding.ASCII.GetString(buffer,...

    socket服务和客户端测试XML文件接收和发送

    在C#中,我们可以使用Socket的`Send()`和`Receive()`方法来发送和接收字节数据。在本案例中,XML文件会被序列化为字节流,然后通过Socket发送。接收端则反序列化接收到的字节流回XML文档。 4. **客户端**:客户端是...

    Socket介绍及用法

    3. 数据传输:通过send()和recv()函数发送和接收数据。 4. 断开连接:使用close()函数关闭Socket,结束连接。 总的来说,Socket提供了一种在网络中建立和维护连接的手段,而TCP协议则保证了数据的可靠传输。通过...

    Socket_Server_Client

    3. **接收数据(Receive)**: 使用`Socket.Receive()`或`Socket.BeginReceive()`/`Socket.EndReceive()`异步方法接收客户端发送的数据。 4. **发送数据(Send)**: 可以使用`Socket.Send()`或异步的`Socket....

    pb下利用socket进行网络传输

    在PowerBuilder(PB)环境中,Socket编程是一种常用的技术,用于实现应用程序间的网络通信。本篇将深入探讨如何在PowerBuilder中利用Socket进行网络传输,并详细解释相关API函数及其用法。 首先,Socket是网络编程...

    c# socket设置代理

    6. **发送和接收数据**:连接建立后,通过`Socket.Send()`和`Socket.Receive()`方法进行数据传输。确保正确处理数据的编码和解码。 7. **关闭连接**:完成通信后,记得调用`Socket.Close()`或`Socket.Shutdown()`...

    C# Socket 通信,客户端服务器端

    5. **接收和发送数据**:通过`Socket.Receive()`和`Socket.Send()`方法进行数据的读写。这两个方法可以阻塞直到有数据可读或数据被发送。 客户端的实现则相对简单: 1. **创建Socket实例**:同样使用`new Socket...

    C# 使用Socket发送和接收TCP数据

    5. 使用这个新Socket实例进行数据的发送和接收,调用`Receive()`和`Send()`方法。 接下来,我们转向客户端。C#中的TCP客户端主要涉及以下操作: 1. 创建Socket实例,同样指定地址族和套接字类型。 2. 使用`Connect...

    在VB.NET下利用Socket实现简单的字符串发送接收程序

    clientSocket.Send(sendBytes) ``` 接收数据时,我们需要创建一个缓冲区来存储接收到的数据,然后调用Receive方法: ```vbnet Dim receiveBuffer As New Byte(1024)() ' 创建一个足够大的缓冲区 Dim receivedCount ...

    VB.net socket编程

    - 连接成功后,客户端就可以通过`Socket.Send()`方法发送数据,而服务器端则通过`Socket.Receive()`方法接收数据。 - 同样,服务器也可以使用`Socket.Send()`方法向客户端发送数据,客户端使用`Socket.Receive()`...

    c#socket断开重连

    socket.Send(心跳数据); } catch (SocketException ex) { // 连接断开,尝试重连 if (ex.SocketErrorCode == SocketError.ConnectionReset) { Console.WriteLine("连接断开,尝试重连..."); Reconnect(socket,...

    C# SocketDemo

    - 使用`Socket.Receive(Byte[] buffer, SocketFlags flags)`或`Socket.Receive(Byte[] buffer, int offset, int size, SocketFlags flags)`方法接收数据。注意,这些方法可能阻塞直到数据可用,或者达到指定大小。 ...

    Socket编程C# asp.net

    这通常涉及到 `Socket.Receive()` 和 `Socket.Send()` 方法。 7. **关闭 Socket**:通信完成后,务必调用 `Socket.Close()` 关闭 Socket,释放资源。 下面是客户端的步骤,与服务器类似,但主要区别在于客户端需要...

    c# socket demo 已经封装成共通

    socket.Shutdown(SocketShutdown.Send); socket.Close(); ``` 为了提高代码的可重用性和可维护性,通常会将这些基本操作封装成类或方法。例如,可以创建一个TcpClient类,包含连接、发送、接收和断开连接的方法...

    9772.zip_mql_mql4 socket_socket

    MQL4提供了内置的socket函数,如`Connect()`, `Accept()`, `Send()`, `Receive()`, `Close()`等,这些函数使得开发者可以方便地执行TCP/IP连接、数据传输和断开连接等操作。 标签"mql mql4_socket socket"进一步...

    C# Socket 客户端服务端封装带使用实例

    3. 数据收发:使用Socket的Receive和Send方法进行数据的接收和发送。 4. 错误处理:捕获SocketException异常,处理连接失败、数据传输错误等情况。 5. 关闭Socket:调用Close方法关闭Socket连接。 四、Socket服务端...

Global site tag (gtag.js) - Google Analytics