Java和C#UDP通信问题

大_爱 2013-06-20 02:17:30
Java作为UDP的服务器,
C#做为UDP的客户端。
源代码


package com.taoge.socke;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPEchoServer {
private static final int ECHOMAX=255;//max size of echo datagram

public static void main(String[] args) throws IOException {
/*
if(args.length!=1){
throw new IllegalArgumentException("Parameter(s):<Port>");
}
*/
//int servPort=Integer.parseInt(args[0]);
int servPort = 5555;

//1.创建一个DatagramSocket实例,指定本地端口号,可以选择指定本地地址
DatagramSocket socket=new DatagramSocket(servPort);
DatagramPacket packet=new DatagramPacket(new byte[ECHOMAX],ECHOMAX);

while(true){
//2.使用DatagramSocket的receive方法来接收一个DatagramPacket实例。
socket.receive(packet);
System.out.println("Handling client at "+packet.getAddress().getHostAddress()+" on port "+packet.getPort());
System.out.println("包的数据:" + new String(packet.getData()));
socket.send(packet);
packet.setLength(ECHOMAX);
//socket.close();
}
}
}


C#部分


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace ConsoleApplication1
{

/**
* C# 版本UDP客户端,用与连接Java服务器端发送数据。
* */
class Program
{


static void Main(string[] args)
{
int SenderPort = 5555;
String host = "127.0.0.1";

IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipepoit = new IPEndPoint(ip,SenderPort);

UdpClient udpClient = new UdpClient(SenderPort);
udpClient.Connect(ip,SenderPort);

Byte[] sendByts = Encoding.ASCII.GetBytes("welcome to chengdu!!");

//udpClient.Send(sendByts,sendByts.Length);
udpClient.Send(sendByts, 255);
//IPEndPoint RemoteIpEndPoint = new IPEndPoint(ip, 0);

//Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
//string returnData = Encoding.ASCII.GetString(receiveBytes);

//Console.WriteLine("This is the message you received " + returnData.ToString());
//Console.WriteLine("This message was sent from " + RemoteIpEndPoint.Address.ToString() + " on their port number " + RemoteIpEndPoint.Port.ToString());
Console.WriteLine("发送数据完毕!!");
udpClient.Close();

}
}
}



现在是C# 给Java发送消息,Java这段收不到消息。

Java给Java发送没有问题,C# 给C#发送也没有问题,现在就是C#发送给Java有问题。
...全文
299 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大耳996 2013-09-25
  • 打赏
  • 举报
回复
你好!我也遇到了跟你同样的问题。UDP方式的通讯请教下你们是怎么解决的。
O西瓜 2013-06-21
  • 打赏
  • 举报
回复
udpclient内部对socket进行了封装,对它我也不熟。 udpClient.Send(sendByts, 255); 这一行应该会报错的,因为数据包没有这么长,其它的好像没问题。
O西瓜 2013-06-21
  • 打赏
  • 举报
回复
我喜欢用socket,原滋原味哈,Java没做修改,C#稍改了一下,Java端可以收到数据。


int SenderPort = 5555;
String host = "127.0.0.1";
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse(host),SenderPort);

Byte[] sendByts = Encoding.ASCII.GetBytes("welcome to chengdu!!");
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.SendTo(sendByts,sendByts.Length, SocketFlags.None, RemoteIpEndPoint);


Console.WriteLine("发送数据完毕!!");
socket.Close();
大_爱 2013-06-21
  • 打赏
  • 举报
回复
引用 6 楼 lqbbduck 的回复:
我喜欢用socket,原滋原味哈,Java没做修改,C#稍改了一下,Java端可以收到数据。

            int SenderPort = 5555;
            String host = "127.0.0.1";
            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse(host),SenderPort);

            Byte[] sendByts = Encoding.ASCII.GetBytes("welcome to chengdu!!");
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            socket.SendTo(sendByts,sendByts.Length, SocketFlags.None, RemoteIpEndPoint);
            

            Console.WriteLine("发送数据完毕!!");
            socket.Close();
我昨天测试了,用socket的方式没有问题,用C#的udpclient类 就不行,还是用socket算了。
Inhibitory 2013-06-21
  • 打赏
  • 举报
回复
应该消息是接收到的,只是C#发送过来时Java不知道哪里是消息帧的分界点而仍然缓存在消息队列里。
大_爱 2013-06-20
  • 打赏
  • 举报
回复
引用 4 楼 aidayy 的回复:
用mina做
这是什么?
aidayy 2013-06-20
  • 打赏
  • 举报
回复
用mina做
大_爱 2013-06-20
  • 打赏
  • 举报
回复
有人知道这个问题么?
大_爱 2013-06-20
  • 打赏
  • 举报
回复
引用 1 楼 a1006570862 的回复:
表示c#没学过,有压力
其实我也没学过,还要写C#的程序,表示压力山大!
地下室森林 2013-06-20
  • 打赏
  • 举报
回复
表示c#没学过,有压力

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧