`
sgm881218
  • 浏览: 58303 次
社区版块
存档分类
最新评论

socket 的TCP和UDP通信

阅读更多

1.socket的TCP通信

客户端:

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

public class TCPClient {
	public static void main(String[] args) {
		try {
			//创建一个Socket对象,指定服务器端的IP地址和端口号
			Socket socket = new Socket("192.168.1.104",4567);
			//使用InputStream读取硬盘上的文件
			InputStream inputStream = new FileInputStream("f://file/words.txt");
			//从Socket当中得到OutputStream
			OutputStream outputStream = socket.getOutputStream();
			byte buffer [] = new byte[4*1024];
			int temp = 0 ;
			//将InputStream当中的数据取出,并写入到OutputStream当中
			while((temp = inputStream.read(buffer)) != -1){
				outputStream.write(buffer, 0, temp);
			}
			outputStream.flush();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 服务器端:

import java.io.IOException;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SocketActivity extends Activity {
    /** Called when the activity is first created. */
	private Button startButton = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startButton = (Button)findViewById(R.id.startListener);
        startButton.setOnClickListener(new StartSocketListener());
    }
    
    class StartSocketListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			new ServerThread().start();
		}
    	
    }
    
    class ServerThread extends Thread{
    	public void run(){
    		//声明一个ServerSocket对象
    		ServerSocket serverSocket = null;
    		try {
    			//创建一个ServerSocket对象,并让这个Socket在4567端口监听
				serverSocket = new ServerSocket(4567);
				//调用ServerSocket的accept()方法,接受客户端所发送的请求
				Socket socket = serverSocket.accept();//accept是个阻塞方法,不用担心nullException
				//从Socket当中得到InputStream对象
				InputStream inputStream = socket.getInputStream();
				byte buffer [] = new byte[1024*4];
				int temp = 0;
				//从InputStream当中读取客户端所发送的数据
				while((temp = inputStream.read(buffer)) != -1){
					System.out.println(new String(buffer,0,temp));
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			finally{
				try {
					serverSocket.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		
    	}
    }
}

 2.socket的UDP通信

客户端 :

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPClient {
	public static void main(String[] args) {
		try {
			//首先创建一个DatagramSocket对象
			DatagramSocket socket = new DatagramSocket(4567);
			//创建一个InetAddree
			InetAddress serverAddress = InetAddress.getByName("192.168.1.104");
			String str = "hello";
			byte data [] = str.getBytes();
			//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
			DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);
			//调用socket对象的send方法,发送数据
			socket.send(packet);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 服务器端:

import java.io.IOException;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SocketActivity extends Activity {
    /** Called when the activity is first created. */
	private Button startButton = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startButton = (Button)findViewById(R.id.startListener);
        startButton.setOnClickListener(new StartSocketListener());
    }
    
    class StartSocketListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			new ServerThread().start();
		}
    	
    }
    
    class ServerThread extends Thread{
    
    	public void run(){
    		try {
    			//创建一个DatagramSocket对象,并指定监听的端口号
				DatagramSocket socket = new DatagramSocket(4567);
				byte data [] = new byte[1024];
				//创建一个空的DatagramPacket对象
				DatagramPacket packet = new DatagramPacket(data,data.length);
				//使用receive方法接收客户端所发送的数据
				socket.receive(packet);//这也是个阻塞方法
				String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
				System.out.println("result--->" + result);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    	}
    }
}

 

0
4
分享到:
评论

相关推荐

    C#winform TCP通信 UDP通信 Socket通信 vs2017 .net4.0

    总结来说,"C# WinForm TCP通信 UDP通信 Socket通信 vs2017 .net4.0"项目是一个学习和实践C#网络编程的好材料。通过此项目,开发者可以深入理解TCP和UDP的区别,掌握如何在C#环境中使用Socket进行网络通信,并了解...

    VC异步Socket TCP/UDP通信,有客户端和服务器

    VC++(Visual C++)作为Microsoft开发的一款集成开发环境,提供了丰富的库支持来实现网络编程,包括使用Socket进行TCP和UDP通信。异步Socket通信是其中一种高效且常用的通信方式,它可以处理大量并发连接,提高系统...

    C#2010 Socket TCP和UDP报文及端口测试工具的开发和源码

    C#是一种广泛用于构建桌面和Web应用的编程语言,它提供了强大的Socket类库来处理TCP和UDP通信。本篇文章将深入探讨如何使用C# 2010开发一个Socket测试工具,包括TCP和UDP报文的发送与接收,以及端口的测试。 首先,...

    Socket网络TCP/UDP通信调试工具

    SocketTool调试工具官方版是一款网络TCP/UDP通信调试工具。SocketTool调试工具最新版可以有效地帮助网络管理员检测各种网络通信状永久,集成了TCP服务器/客户端、UDP服务器/客户端和UDP广播/组播等功能。SocketTool...

    C# Socket TCP和UDP报文及端口测试工具的开发(提供源码)万能超好测试工具

    在C#中,Socket类同样可以用于UDP通信,只需切换到UDP模式并使用BeginSendTo和BeginReceiveFrom等异步方法。这个测试工具可以帮助我们测试UDP的广播、多播以及数据包的丢失情况。 标签"C# Socket TCP UDP"表明了这...

    C# socket通信TCP和UDP方式

    在"SeverTest"项目中,你可能会实现一个服务器程序,它可以同时支持TCP和UDP通信。对于TCP服务器,你需要创建一个`TcpListener`,并在接收到连接请求时,为每个客户端创建一个新的线程或任务来处理通信,以实现多...

    欧姆龙TCP UDP Socket网络通讯.zip

    本资源"欧姆龙TCP UDP Socket网络通讯.zip"提供了关于如何利用TCP和UDP协议通过Socket进行欧姆龙PLC设备通信的实例。以下是关于这个主题的详细知识点: 1. **Socket基础**: - Socket是一种网络编程接口,用于在...

    socket tcp/udp demo

    3. UDP通信: - 创建UDP socket,同样使用`socket()`函数。 - 对于服务器端,使用`bind()`绑定到特定的端口,以便接收数据。 - 使用`recvfrom()`函数接收数据,它会返回数据和发送者的信息。 - 使用`sendto()`...

    Socket之tcp和udp

    在标题“Socket之tcp和udp”中,涉及的核心知识点是TCP(传输控制协议)和UDP(用户数据报协议),这两种协议是网络通信中常见的传输层协议。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层...

    UE5 TCP/UDP通信插件 SimpleUDPTCPSocketClient

    UE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 ...

    SuperSocket-master_Socket基于TCP、UDP

    SuperSocket支持TCP和UDP两种通信方式,使得开发者可以灵活选择适合其应用需求的通信模型。 1. **使用SuperSocket开发TCP应用** - SuperSocket为TCP应用提供了一套完整的事件驱动模型,如连接建立、数据接收、断开...

    TCP/UDP socket 调试工具

    SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信状况。 ★ 全面集成 ...

    C sharp Socket TCP UDP 通讯 C#源代码

    C#语言提供了强大的网络编程接口,使得开发者可以利用Socket类进行TCP和UDP通信。本篇将详细介绍C#中Socket TCP和UDP通信的相关知识点。 首先,Socket是网络通信的基本组件,它代表了网络上的一个端点,可以用于...

    TCP和UDP socket调试工具V2.2

    通过XML,开发者可以在TCP或UDP通信中方便地传递结构化的信息,例如配置文件、数据库记录等。在调试过程中,查看XML数据的发送和解析是否正确,对于确保应用程序的正常运行至关重要。 使用TCP和UDP通讯测试工具V2.2...

    C#的Socket实现UDP协议通信

    对于UDP通信,Socket类提供了必要的方法和属性来实现数据的发送和接收。 ### 关键代码解析 #### 全局变量定义 - `IPEndPoint ipLocalPoint;` 和 `EndPoint RemotePoint;` 分别用于存储本地和远程端点信息。 - `...

    基于TCP和UDP的socket通信程序(C语言)

    C语言中实现TCP通信时,通常会使用socket API,创建一个socket,然后通过connect()函数与服务器建立连接,再通过send()和recv()函数发送和接收数据。 TCP_IRC项目可能是实现了一个简单的基于TCP的Internet Relay ...

    vc++socket tcp udp 串口通信mysql

    总的来说,VC++ Socket TCP UDP 串口通信MySQL的知识点涵盖了网络编程、硬件接口通信和数据库管理,这些都是现代软件开发中的核心技能,对于提升软件的稳定性和效率有着重要作用。通过学习和实践这些技术,开发者...

    TCP、UDP 通信程序设计实验报告

    在深入探讨TCP与UDP通信程序设计实验报告之前,我们首先要了解TCP(传输控制协议)和UDP(用户数据报协议)之间的区别和联系。TCP是一种面向连接的协议,它提供可靠的数据传输服务,保证数据包按顺序到达,并且能够...

    TCP&UDP调试工具 SocketTool

    SocketTool是一款强大的网络调试工具,专门用于TCP和UDP协议的测试与分析。它为开发者提供了便利的接口,以便于在应用程序中实现网络通信功能的调试和验证。在IT行业中,理解TCP和UDP这两种传输层协议至关重要,因为...

Global site tag (gtag.js) - Google Analytics