`
zpball
  • 浏览: 919208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java网络编程之TCP/IP ——SocketServer与Socket

    博客分类:
  • J2EE
阅读更多
java网络编程主要包含4部分: (注意设置超时时间)
1.URL 连接  :类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
2.HttpURLConnection连接:相当于servlet,发送单个以post或get方式的请求,
3.TCP/IP连接   可靠传输ServerSocket类
4.UDP连接      DatagramSocket 类,  此类表示用来发送和接收数据报包的套接字。

TCP/IP 连接 Server服务器端
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;


/**
 *@ClassName:Server
 *@author: chenyoulong  
 *@date :2012-7-30 上午10:35:09
 *@Description:TODO 
 */
public class SendServer {

	/**
	 * @throws IOException  
	 * @Title: main 
	 * @Description: TODO 
	 * @param @param args   
	 * @return void   
	 * @throws 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
       ServerSocket server=new ServerSocket(8888);
       System.out.println("server start");
       Socket sock=server.accept();
       sock.setSoTimeout(6000);   //服务器端设置连接超时时间,该操作只对读取(read)操作有效。

       //读取
       //字节流的形式读取   
       // 优缺点分析,弱点:受byte[]大小的限制  ,优点:不受回车符(\r)和换行符(\n)限制
       InputStream input=sock.getInputStream();
       byte[] buf =new byte[1024];
       System.out.println("InputStream==="+input);
       if(input!=null){
    	   int len=input.read(buf);
    	   ToolKit.writeLog(SendServer.class.getName(), "服务器端收到的报文:\n"+new String(buf, 0, len));
       }
            
       
      /* //字符流的形式读取
          //(遇到换行符或者回车符就终止,还是谨慎使用)
       BufferedReader read=new BufferedReader(new InputStreamReader(sock.getInputStream()));
       String readStr=null;
       if((readStr=read.readLine())!=null){
    	   ToolKit.writeLog(Server.class.getName(), "服务器端收到的报文:\n"+readStr);
       }
       if(read!=null) read.close();
       */
       
       
       /*//输出
       String outStr="我是server服务器端";
       BufferedWriter write=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
      
       if(outStr!=null){
    	   write.write(outStr);
       }
       if(write!=null) write.close();*/
       
       
       //挂关闭资源
       if(sock!=null) sock.close();
       if(server!=null) server.close();
	}


TCP/IP连接 Client客户端

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import org.apache.log4j.Logger;


/**
 *@ClassName:ReceiveClient
 *@author: chenyoulong  
 *@date :2012-8-3 下午2:17:26
 *@Description:TODO 
 */
public class ReceiveClient {
	private final String IP=Setting.RECEIVE_IP;
	private final int PORT=Setting.RECEIVE_PORT;
	private  Logger log = Logger.getLogger(Sender.class.getName());
	//发送
	/**
	 * @throws Exception 
	 * 发送报文
	 * @Title: send 
	 * @Description: TODO 
	 * @param @param reqMessage   
	 * @return void   
	 * @throws
	 */
   public void send(String reqMessage) throws Exception{
	   Socket sock=null;
	   BufferedOutputStream out=null;
	   try {
		sock=new Socket();

                  SocketAddress sockAdd=new InetSocketAddress(IP, PORT);
	         sock.connect(sockAdd, 2000); //客户端设置连接建立超时时间

	         out=new BufferedOutputStream(sock.getOutputStream());
		out.write(reqMessage.getBytes());
		out.flush();
		
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		log.error("网络连接异常"+Strings.getStackTrace(e));
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		log.error("网络连接异常\n"+Strings.getStackTrace(e));
		e.printStackTrace();
	}finally{
		if(out!=null){
			try {
				out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();			}
		}
		if(sock!=null){
			try {
				sock.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
					e.printStackTrace();
		}
		}
	} 
   }
	
	
	//接收
	public String  reiceve() throws Exception{
		Socket sock=null;
		BufferedInputStream in=null;
		  
			try {
				sock=new Socket(IP,PORT);
				in = new BufferedInputStream(sock.getInputStream());
				 if ((sock == null) || (in == null)) {
			            throw new Exception("套接口无效,无法读取数据");
			      }
				
			} catch (UnknownHostException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			 byte[] bts = new byte[10000];
	         int totalLen = 0, len = 0;
	         while ((len = in.read(bts, totalLen, 1000)) != -1) {
	                totalLen += len;
	            }
	         String result = new String(bts);  //注意字符编码
		     return result.trim();
	} 
	

//main函数示例

	public static void main(String[] args){
	    //发送报文
	
		
		//发送
                               String str="我是客户端!"      
		try {
				new ReceiveClient().send(str);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		
		//接收报文
		/*try {
			String recStr=new Receiver().reiceve();
			System.out.println("客户端接收到的结果=="+recStr);
                 	} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
	}
}
分享到:
评论

相关推荐

    串口服务器

    实现网络数据和串口数据相互转换的功能,使用时需要配置用于接收数据的串口以及要传向的目标网络IP与端口号,网络数据的发送采用UDP/TCPServer/TCPClient/SocketServer/SocketClient模式,串口通讯与网络通讯互转...

    SocketServer_nightct1_socketserver_socketc#_

    SocketServer_nightct1_socketserver_socketc#_ 是一个基于C#编程语言实现的Socket通信客户端程序,主要用于TCP/IP协议的网络编程。在本文中,我们将深入探讨SocketServer的原理、设计模式以及C#中实现Socket通信的...

    C# 网络编程之socket tcp 通讯demo样例

    这个"C# 网络编程之socket tcp 通讯demo样例"可能涵盖了这些基本操作,为初学者提供了理解TCP通信机制的起点。通过阅读和理解代码,你可以了解到如何在C#中建立和管理TCP连接,以及如何进行数据的收发。对于进一步的...

    Tcp(socket)Server.java

    Tcp(socket)Server.java

    python网络编程socketserver[总结].pdf

    Python的网络编程主要依赖于socket库,而socketserver模块则为开发者提供了更加便捷的方式来构建网络服务器。`socketserver`简化了服务器的创建过程,通过预定义的类来处理TCP、UDP等各种类型的网络通信,同时也支持...

    MQTTnet-master (1)_HTTP_socketserver_socket_MQTTnet_httpserver_源

    Socket是TCP/IP协议栈中的基础组件,允许程序之间通过网络进行双向通信。HTTP SocketServer将HTTP请求解析并转化为Socket操作,从而处理客户端的请求,这通常用于自定义HTTP服务器实现或扩展已有服务器的功能。 **4...

    TCP IP通信编程实现(多客户端)

    总结起来,实现多客户端的TCP/IP通信编程,我们需要理解TCP协议的工作原理,掌握SOCKET编程的基本操作,并结合多线程技术来处理并发连接。这样的服务端程序可以高效地服务于多个客户端,满足现代网络应用的需求。在...

    ssrv_socketserver_socket_

    SocketServer是建立在socket之上的高级抽象,简化了服务器端的开发。 **Socket基本操作:** 1. **创建Socket对象** - 使用socket.socket()函数创建一个套接字实例。 2. **绑定地址和端口** - 调用socket.bind()方法...

    java socketServer socket

    Java SocketServer 和 Socket 是网络编程中的基础概念,用于构建客户端-服务器通信模型。在这个场景下,`MathServer.java` 可能是服务器端程序,而 `Client.java` 是客户端程序。接下来,我们将深入探讨这两个核心...

    python网络编程之TCP通信实例和socketserver框架使用例子

    1.TCP是一种面向连接的可靠地协议,在...2.python可以实现TCP服务器和客户端的编程,下面是代码: 服务器端: 复制代码 代码如下:#!/usr/bin/env pythonimport sockethost=”localhost”port=10000s=socket.socket(soc

    Socket TCP协议的服务类(20110304修正)

    /// Socket TCP协议的服务类。引入连接会话超时概念,使用事件机制抛出服务产生的异常和接收到的数据。 /// 主要2个类: /// TcpServer 服务类,要负责监听连接,并为每一个连接创建Session后放置在Session列表中。 ...

    Java中的socket网络编程.pdf

    ### Java中的Socket网络编程:深度解析 #### 一、Socket概念与作用 Socket,中文常译作“套接字”,是计算机网络编程中一个至关重要的概念。它为两台计算机之间提供了通信接口,使得不同机器上的应用程序能够进行...

    VC TCP UDP socketserver client编程例子

    总之,"VC TCP UDP socketserver client编程例子"是一个非常实用的学习资源,它可以帮助开发者深入理解和实践TCP和UDP的socket编程,提升网络通信方面的技能。通过阅读和运行示例代码,开发者可以更好地掌握网络编程...

    Socket_Server_Client_socketserver_SocketClient_C#源码_

    Socket编程在IT行业中是网络通信的基础,特别是在C#这样的面向对象编程语言中,它提供了强大的网络通信能力。本文将深入探讨标题"Socket_Server_Client_socketserver_SocketClient_C#源码_"所涵盖的知识点,主要围绕...

    java socket通信自定义消息协议

    自定义消息协议是在标准TCP/IP协议之上,根据具体需求设计的一种数据传输格式。本篇将详细讲解如何在Java中实现基于Socket的自定义消息协议,以及客户端与服务器端的数据转换与解析过程。 首先,我们来看`Socket...

    test_SocketServer.rar_socket server_socket_test_socketserver_win

    在TCP/IP协议栈中,Socket分为两种类型:流式Socket(SOCK_STREAM,基于TCP)和数据报式Socket(SOCK_DGRAM,基于UDP)。本示例很可能使用的是流式Socket,因为它们提供面向连接、可靠的数据传输。 Windows Socket ...

    Android开发,Socket Client端和Socket Server端数据发送和接收

    - **Socket定义**:Socket是网络编程中的一个接口,它允许应用程序通过TCP/IP协议进行数据交换。在Java中,Socket类和ServerSocket类提供了客户端和服务端的实现。 - **TCP/IP协议**:传输控制协议/因特网协议,...

    TCP protocol implementation

    了解OSI模型或TCP/IP协议栈有助于理解不同层次间的交互。 9. **实际应用**: - 网页浏览、电子邮件、文件传输、远程登录等许多互联网服务都基于TCP协议。 通过分析和理解这个项目,你可以深入学习TCP协议的运作...

    PB Winsocket完整实例

    PB Winsocket完整实例是PowerBuilder (PB) 中利用Winsocket API进行网络通信的一个详细示例。这个实例在PB10环境下已经过调试...同时,对于理解网络编程原理、实践TCP/IP协议以及掌握PB的高级特性也有很大的促进作用。

    Python网络编程(Linux)_网络编程_python_linux网络编程_

    它涉及IP地址、端口号、协议(如TCP/IP、UDP)和数据传输。在Python中,这些概念可以通过内置的socket模块来实现。 2. **Python的socket模块**:Python的socket模块提供了低级别的网络通信接口,可以创建和操作套接...

Global site tag (gtag.js) - Google Analytics