udp编程Java语言应用中实现UDP协议编程的方法?
udp编程 时间:2021-08-30 阅读:(
)
CSocket之UDP编程
#include <stdio.h>
#include <Winsock2.h>
#ment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sersocket=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN seraddr;
seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(5000);
bind(sersocket,(SOCKADDR*)&seraddr,sizeof(SOCKADDR));
SOCKADDR clientaddr;
int len=sizeof(SOCKADDR);
char revbuf[100];
char sendbuf[100];
recvfrom(sersocket,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s
",revbuf);
scanf("%s",&sendbuf);
sendto(sersocket,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);
closesocket(sersocket);
WSACleanup();
}
#include <stdio.h>
#include <Winsock2.h>
#ment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sockclient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN clientaddr;
clientaddr.sin_addr.S_un.S_addr=_addr("127.0.0.1");
clientaddr.sin_family=AF_INET;
clientaddr.sin_port=htons(5000);
int len=sizeof(SOCKADDR);
char revbuf[100];
char sendbuf[100];
printf("请输入内容:
");
while(1)
{
scanf("%s",&sendbuf);
sendto(sockclient,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);
recvfrom(sockclient,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s
",revbuf);
}
closesocket(sockclient);
WSACleanup();
}
大同小异,CSocket只是进行了封装而已,原理是一样的,编程要思路灵活才行。
在MFC中的UDP程序怎么编写用CAsyncSocket或者CSocket?
呵呵整一个SOCKET盲
还一上来就要用封装好的MFC类,哀分少啊,帮你说说吧
建立一个新类从CAsyncSocket public 派生来,叫 MySock,然后在CXXXDlg的头文件加个变量 MySock m_socket; 然后 CXXXDlg中的INITDIALOG初始化, m_socket.Create(0,SOCK_DGRAM); 使用UDP恩首先你要考虑到服务器端也是使用UDP的协议的,然后就可以调用 m_socket.SendTo(buffer,strlen(buffer),3333,"xxx.xxx.xxx.xxx");
3333是服务器等待接收数据的端口,XXX.XXX.XXX.XXX 是服务器的IP,恩域名也可以...如果服务器是TCP的话要用Connect连接然后用Send方法发送数据,使用完调用close关闭SOCKET,也疴可以不关,类销毁时会自动释放所使用资源,恩至于要等待接收数据,UDP需要BIND,可以在CREATE的时候就绑定上,而TCP不光要绑定上还要listen监听,TCP有连接来后要用ept接收连接,给它一个新的 CAsyncSocket,呵呵就说这么点,对了在BOOL CXXXApp::InitInstance()的初始化函数中添加
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
还有头文件 #include <afxsock.h> // MFC socket extensions .或者你在创建工程时选择上WINSOCKET,
恩对了CSocket是堵塞的套接字,需要同步很强的工作再选择他,一般使用异步的,给分!TCP 和 UDP 在socket编程中的区别
一、TCP与UDP的区别
基于连接与无连接
对系统资源的要求(TCP较多,UDP少)
UDP程序结构较简单
流模式与数据报模式
TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
部分满足以下几点要求时,应该采用UDP 面向数据报方式 网络数据大多为短消息
拥有大量Client
对数据安全性无特殊要求
网络负担非常重,但对响应速度要求高
具体编程时的区别 socket()的参数不同
UDP Server不需要调用listen和ept
UDP收发数据用sendto/recvfrom函数
TCP:地址信息在connect/ept时确定
UDP:在sendto/recvfrom函数中每次均 需指定地址信息
UDP:shutdown函数无效急求C语言编写的基于UDP的点对点的聊天程序代码
UDP啊。
。
服务器:
socket(AF_INET, SOCK_DATEGRAM,0);
初始化地址。
bind一下。
然 recv或者 sendto。
客户端:
一样。
socket因为UPD。
直接conect一样。
sendto就行了。
注意 :1.聊天 需要 IO多路复用。
select 或者 poll。
可以实现
2. 群聊。
。
其实就是一个 发送给多个。
。
把IP往出口 轮询就行。
3.添加好用。
登陆?。
这个没界面。
后台把这些存到数据库里。
启动的时候。
seletc出来。
。
你给多少分。
都没人给你写的。
自己百度吧。
。
。
C++的UDP编程,设置广播地址为255.255.255.255,广播不出去
看起来不像是代码有错 而更像这两台机器的设置有问题。
几个问题:
1、从别的机器上发出的广播,这两台机器能收到吗?
2、从这两台机器向255.255.255.255发广播,如果在它们上面运行wireshark,能抓到UDP包吗?
3、这两台机器的网卡没有被设成promiscuous mode吧?
4、把这两台机器的网卡和其他工作的机器的网卡换了看看什么结果?
5、如果你的机器跑windows 7,可以在这两台机器和其他机器上用work and connection center里面自带work map看看各台机器之间是怎样连接的。
Java语言应用中实现UDP协议编程的方法?
//发送端SocketSendFile.java
import java.io.*;
import .*;
public class SocketSendFile {
public static final int SER_PORT=666;
public static final int CLI_PORT=8484;
public static final String SER_IP="192.168.0.35";
public static int bufSize = 1024;
public static byte] mess = new bytebufSize];
//建立Socket引用
public static DatagramSocket dp;
public static void main(String] args) throws Exception {
dp = new DatagramSocket(SER_PORT);
//调用构造函数SocketSendFile,并传递参数args0](所要传输的文件名)
SocketSendFile(args0]);
}
public static void SocketSendFile(String file2) throws Exception {
//定义一个计数器
int pos =0;
//设置写入流
FileInputStream fis = new FileInputStream(file2);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
int i;
do {
i = dis.read();
int j=0;
while (j<1024 & i != -1) {
messpos++] = (byte) i;
i=dis.read();
j++;
}
dp.send(new DatagramPacket(mess,pos,Address.getByName(SER_IP),CLI_PORT));
}
while (i != -1);
fis.close();
}
}
//接收端SocketReceiveFile.java
import .*;
import java.io.*;
public class SocketReceiveFile {
public static int bufSize=1024;
public static byte] mess=new bytebufSize];
public static DatagramSocket dp;
public static final int SER_PORT=8484;
public static void main(String] args) throws Exception {
dp = new DatagramSocket(SER_PORT);
SocketReceiveFile(args0]);
}
public static void SocketReceiveFile(String file1) throws Exception {
FileOutputStream fos = new FileOutputStream(file1);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
int i;
DatagramPacket p = new DatagramPacket(mess,mess.length);
while(true) {
boolean j=false;
while (p.getData().length != 0) {
dos.write(p.getData());
dp.receive(p);
j=true;
}
// System.out.println(new String(p.getData(),0,p.getLength()));
if (j)
System.out.println("文件传送完毕.");
}
// fos.close();
}
}
ProfitServer怎么样?ProfitServer好不好。ProfitServer是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对...
水墨云怎么样?本站黑名单idc,有被删除账号风险,建议转出及数据备份!水墨云ink cloud Service是成立于2017年的商家,自2020起开始从事香港、日本、韩国、美国等地区CN2 GIA线路的虚拟服务器租赁,同时还有台湾、国内nat vps相关业务,也有iplc专线产品,相对来说主打的是大带宽服务器产品。注意:本站黑名单IDC,有被删除账号风险,请尽量避免,如果已经购买建议转出及数据备...
819云是我们的老熟人了,服务器一直都是稳定为主,老板人也很好,这次给大家带来了新活动,十分给力 香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP 240元0官方网站:https://www.819yun.com/ 特惠专员Q:442379204套餐介绍套餐CPU内存硬盘带宽IP价格香港CN2 (特价)E5 随机分配16G1T 机械20M3IP240元/月日本CN2 (...
udp编程为你推荐
公告格式通知格式??网络地址分类A、B、C三类网络地址是如何划分的?请解释的通俗一点。余额宝收益走势图支付宝余额宝收益46块6,存了多少余额宝收益走势图余额宝10000元一年收益多少化学键理论关于化学键的知识呼叫中心系统方案我们要自己建一个呼叫中心,用于做客户服务。请问应该怎么做规划方案呢?怎样清除历史记录手机的历史记录怎么删除access数据库入门access 基础书短信认证工商银行口令卡的短信认证是什么意思?本地连接断开本地连接经常断开是怎么回事?
南通服务器租用 广东服务器租用 河南vps 免费动态域名 美国独立服务器 jsp主机 linkcloud wdcp 外国域名 监控宝 xen 标准机柜尺寸 租空间 华为4核 警告本网站美国保护 asp免费空间申请 qq云端 卡巴斯基免费试用 搜索引擎提交入口 国外ip加速器 更多