- 论坛徽章:
- 0
|
[结帖]c++, java udp通信
谢谢以上各位的捧场。感谢!
今天早上我改了一下,然后程序就通了。贴上来和大家共勉。
client: udpc.c server:udpserver.java
执行顺序:开两个终端A,B
1。分别将A,B的路径cd到程序所在目录
2。A中执行
#javac udpserver.java
#java udpserver
这样,java的服务器就启动了
3。B中执行
#gcc -o udpc udpc.c
#./udpc
这样,c的客户端就启动了。
最后结果:
server端:
[root@ns c_java_udp]# javac udpserver.java
[root@ns c_java_udp]# java udpserver
Sending string!Client to Server!
client端:
[root@ns c_java_udp]# gcc -o udpc udpc.c
[root@ns c_java_udp]# ./udpc
send string success
[root@ns c_java_udp]#
下面是代码:
server:
========================================================================
///////////////////////////////////////////
//1.#javac udpserver.java
//2.#java udpserver
//////////////////////////////////////////
import java.io.*;
import java.lang.*;
import java.net.*;
public class udpserver
{
private DatagramSocket server_sock;
private DatagramPacket pac;
private byte recv_buffer[];
private String recv_string;
public udpserver()
{
Init();
}
public void Init()
{
try
{
server_sock=new DatagramSocket(1234);
recv_buffer=new byte[1024];
pac=new DatagramPacket(recv_buffer,recv_buffer.length);
recv_string="";
int i=0;
while(true)//无数据,则循环
{
server_sock.receive(pac);
i=pac.getLength();
//接收数据
recv_string=new String(recv_buffer,0,pac.getLength());
System.out.println(recv_string);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
new udpserver();
}
}
===================================================================
client: udpc.c
===================================================================
///////////////////////////////////////////
//1.#gcc -o udpc udpc.c
//2#./udpc
///////////////////////////////////////////
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int fd;
struct sockaddr_in address;
int address_len;
char line[100] = "Sending string:Client to Server!";
int n;
//建立套接口
fd = socket(AF_INET, SOCK_DGRAM, 0);//AF_INET和SOCK_DGRAM的组合对应UDP协议
//联接
bzero(&address, sizeof(address));
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = htons(1234);
address_len = sizeof(address);
//发送数据
sendto(fd, line, strlen(line)+1, 0,(struct sockaddr *)&address, sizeof(address));
printf("send string success\n");
} |
|