`

关于JAVA使用socket传输带格式(颜色,字体)文本的若干思考

阅读更多

假设socket设置字体传输到客户端

1,开始希望使用对象传递:创建3个类,Client,Server,SetFont,最后一个类是用来设置字体。在Client设置字体时产生一个对象,调用对象的方法设置字体;在Server类中接收Client类传过来的设置字体对象。这个思路的关键是使用socket传递对象。我使用的是函数返回对象,没有实现。

    if (e.getSource() == ft) {
            setfont = new SetFont(this, "字体设置", true);
            setfont.setVisible(true);
            ta.setFont(setfont.myFont);
            tf.setFont(setfont.myFont);

//client端部分代码
	if (e.getSource() == ft) {
			setfont = new SetFont(this, "字体设置", true);
			setfont.setVisible(true);
			ta.setFont(setfont.myFont);
			tf.setFont(setfont.myFont);
//使用函数返回对象
public SetFont getSetFont() {

		return setfont;
		}
//server端实现代码
client A = new client();
                   	A.setVisible(false);
                   	SetFont BB=A.getSetFont();
                    	ta.setFont(BB.myFont);
                        ta.setText(ta.getText() + str + "\n");
 

2,可以使用标签,在传输的文字头部使用一个flag标记颜色,在接收端读取flag并根据flag的值设置相应的颜色

(转载代码)

String []s1={"黑色","红色","蓝色"};
cb1.addItemListener(new  ItemListener(){
			public void itemStateChanged(ItemEvent e){
				if(cb1.getSelectedItem().equals("红色")){
					flag1=1;
				}else{
						if(cb1.getSelectedItem().equals("蓝色")){
							flag1=2;
						}else{
							flag1=0;
						}
				}
			}
		});
b3.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				e.getSource();
				if(flag2==1){
					try{
						LineNumberReader br=new LineNumberReader(new FileReader("123.txt"));
						String str2;
						String str3="";
						for(str2=br.readLine();str2!=null;str2=br.readLine()){
							str3=str3+"\n"+str2;
						}
						 DatagramSocket dataSocket = new DatagramSocket(10000);       
						 byte [] sendDataByte = new byte[1024];
						 sendDataByte=(("r"+str3).getBytes());
						 DatagramPacket dataPacket = new DatagramPacket(sendDataByte, sendDataByte.length,  
								 InetAddress.getByName("localhost"), 10002);           
						 dataSocket.send(dataPacket);
						 dataSocket.close();
						//System.out.print(str3);
					}catch(IOException e2){
						e2.printStackTrace();
					}
					flag2=0;
				}else{
				 try {      
					 DatagramSocket dataSocket = new DatagramSocket(10000);       
					 byte [] sendDataByte = new byte[1024];
					 if(flag1==0){ 
						 sendDataByte =("abc"+tb.getText()).getBytes();
						 insertDocument("你:"+tb.getText()+"\n", Color.BLACK);
					 }
					 else
						 if(flag1==1){
							 sendDataByte =("bcd"+tb.getText()).getBytes();
							 insertDocument("你:"+tb.getText()+"\n", Color.RED);
						 }
						 else{
							 sendDataByte =("def"+tb.getText()).getBytes();
							 insertDocument("你:"+tb.getText()+"\n", Color.BLUE);
						 }      
					 DatagramPacket dataPacket = new DatagramPacket(sendDataByte, sendDataByte.length,  
							 InetAddress.getByName("localhost"), 10002);           
					 dataSocket.send(dataPacket);
					 dataSocket.close();
					 } catch (Exception er) {       
						 er.printStackTrace();
					 } 
					 tb.setText("");
				}
			}
		});
		JP2.add(b3);
		c.add(JP2);
		
		app.setVisible(true);
		
		
		try {      
			DatagramSocket dataSocket = new DatagramSocket(10001);  
			byte []receiveByte = new byte[1024];         
			DatagramPacket dataPacket = new DatagramPacket(receiveByte, receiveByte.length);  
			
			int i=0;
			while (i == 0)      
				{             
				dataSocket.receive(dataPacket);   
				i = dataPacket.getLength();                       
				if (i > 0) {  
					String receiveStr = null;
					String s=null;
					String ss=null;
					receiveStr = new String(receiveByte, 3, dataPacket.getLength()-3);  
					s= new String(receiveByte, 0, 3);
					ss=new String(receiveByte, 0, 1);
					if(ss.equals("r")){
						try{
							String h=new String(receiveByte, 1, dataPacket.getLength()-1);
							FileWriter f=new FileWriter("asd.txt");
							f.write(h);
							f.close();
						}
						catch(IOException e1){
							e1.printStackTrace();
						}
					}else{
						if(s.equals("abc"))
							insertDocument("朋友:"+receiveStr+"\n",Color.BLACK);
						else
							if(s.equals("bcd"))
								insertDocument("朋友:"+receiveStr+"\n",Color.RED);
							else
								insertDocument("朋友:"+receiveStr+"\n",Color.BLUE);
						i = 0;
					}
					}
				if(i==-1)
					dataSocket.close();
				}       
			} 
		catch (Exception e) {   
				e.printStackTrace();  
				}

	}
 

3,将信息进行RTF编码进行读写

 

 

 

分享到:
评论

相关推荐

    java socket使用加密协议传输对象

    ### Java Socket 使用加密协议传输对象:深入解析与实践 在当今互联网时代,数据安全成为企业和个人用户关注的焦点。在Java开发中,Socket编程是一种常见的网络通信方式,它允许不同计算机上的应用程序通过网络进行...

    java socket传输各种格式文件

    在本文中,我们将深入探讨如何利用Java Socket进行不同格式文件的传输,确保数据的完整性和传输速度。 一、Java Socket基础 Java Socket分为ServerSocket和Socket两种类型。ServerSocket用于监听客户端连接,Socket...

    java socket传输demo

    在这个"java socket传输demo"中,我们将深入探讨Java如何使用Socket类来实现客户端和服务器端之间的数据交换。 首先,Socket是Java提供的一个类,位于`java.net`包下,它代表了网络上的两个应用程序之间的一个双向...

    Java Socket传输图片源代码

    在本示例中,我们将深入探讨如何使用Java Socket进行图片的传输,这对于理解网络编程和数据交换至关重要。"Java Socket传输图片源代码"这个主题涵盖了以下几个关键知识点: 1. **Java Socket基础**: - Socket是...

    JAVA Socket编程实现文件上传

    在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...

    使用Socket传输音频

    本文将深入探讨如何使用Java的Socket来实现音频数据的传输。 首先,Socket在网络编程中扮演着“管道”的角色,允许两台计算机(客户端与服务器)通过TCP/IP协议进行双向通信。在“使用Socket传输音频”的场景下,...

    java socket 大文件传输,快速传输(包的分片,组装)源码

    Java Socket 大文件传输是网络编程中的一个关键领域,它涉及到高效的数据传输、包的分片与组装,以及网络协议的选择。在这个场景下,我们通常会用到TCP和UDP这两种传输层协议,以及Java的非阻塞I/O(NIO)技术。下面...

    使用Socket传输视频

    本文将深入探讨如何使用Java的Socket进行视频数据的传输。 首先,了解Socket的基本概念至关重要。Socket,也被称为套接字,是网络通信中的一个抽象接口,它允许两个或多个网络上的进程间进行双向通信。在Java中,...

    java使用Socket类接收和发送数据

    Java中的Socket类是进行网络通信的核心组件,它主要用于实现客户端与服务器之间的TCP连接,从而进行双向数据传输。本文将深入探讨如何使用Socket类接收和发送数据。 首先,我们需要理解Socket类的基本概念。Socket...

    Java基于Socket文件传输示例2007.doc

    Java基于Socket文件传输示例Java基于Socket文件传输示例Java基于Socket文件传输示例

    java 异步socket文件传输

    基于java nio socket 的文件传输例程

    Java基于Socket文件传输示例

    在这个示例中,我们将详细讲解如何使用Java的Socket API进行文件传输。 首先,我们从服务器端开始。服务器端主要负责监听特定端口(如8821)上的连接请求,当客户端连接后,服务器将文件内容发送给客户端。在`...

    java socket文件夹传输

    总之,使用Java Socket进行文件夹传输需要理解TCP/IP的基本原理,熟练掌握Java I/O流的使用,以及具备良好的网络编程和错误处理能力。随着项目的进展,逐步完善和优化功能,以适应更多复杂的场景需求。

    Java Socket 局域网文件传输

    Java基于Socket实现局域网文件传输,此文件包含了Eclipse项目源码和已经打包好了的.jar文件(文件发送端和文件接收端)。 处在同一局域网内的两台主机,一台运行sender.jar文件(发送端),另一台运行receiver.jar...

    java基于socket的文件发送与接收,有界面,有进度条

    Java基于Socket的文件发送与接收是一个常见的网络编程任务,它涉及到客户端和服务器之间的通信,以及大数据量的传输。在本项目中,开发者为用户提供了一个图形用户界面(GUI),并且在传输过程中显示了进度条,这...

    Java Socket聊天和文件传输工具(更新)

    在这个“Java Socket聊天和文件传输工具”中,开发者结合了实时聊天和文件传输的功能,使得用户可以在进行文字交流的同时,无缝地进行文件的交换。这个工具在局域网环境中已经过初步测试,表明其稳定性和效率都达到...

    java socket 图片传输

    ### Java Socket 图片传输知识点详解 #### 一、TCP协议简介 传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在互联网的应用中,TCP协议提供了一种...

    Java socket文件传输实例

    在这个"Java socket文件传输实例"中,我们将深入探讨如何使用Java的Socket类进行文件的发送和接收,这对于理解网络编程的基本原理以及在实际应用中构建文件共享系统至关重要。 首先,Java Socket是基于TCP/IP协议的...

    java-socket传输文件-图片-源码

    根据提供的文件信息,本文将详细解析Java中利用Socket进行文件(包括图片)传输的相关知识点。 ### Java Socket基础知识 在深入探讨文件传输之前,我们先简要回顾一下Java Socket的基础概念。Socket是一种允许不同...

    socket 文件传输编程 java

    在这个主题中,我们将深入探讨Java中的Socket文件传输编程以及多线程的应用。 首先,理解Socket的基本概念至关重要。Socket可以看作是网络上的端点,允许两个应用程序通过网络进行通信。在Java中,`java.net.Socket...

Global site tag (gtag.js) - Google Analytics