java服务端和c程序通信_java与c语言之间的socket通信—c客户端java服务器端

写在前面的声明:程序例子均运行在ubuntu(是一个以桌面应用为主的Linux操作系统)上。当然你也可以把java运行在其它系统上,这里只是为了方便。

上一篇文章已经说明了关于socket的一些知识,but这是远远不够的,我相信只要你感兴趣,学习它并不是什么难事。

好吧,我想你已经迫不及待地想看看 c客户端 java 服务器端通信是什么样子了,我也是;

同样的这只是一个小实例,不过你同样可以学到很多东西,我们开始吧!

首先是服务器端MyServer.java的代码:

import java.io.*;

import java.net.*;

import java.util.*;

public class MyServer {

public static void main(String[] args) throws IOException{

ServerSocket server=new ServerSocket(5678);

while(true){

Socket client=server.accept();

BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));

String str=in.readLine();

System.out.println(str);

client.close();

}

}

}

看下面的截图,你就可以运行它:

0818b9ca8b590ca3270a3433284dd417.png

然后是客户端client.c的代码:

#include

#include

#include

#include

#include

#include

#include

#include

int main() {

int sockfd;

int len;

struct sockaddr_in address;

int result;

char* ch;

while(1){

sockfd = socket(AF_INET,SOCK_STREAM,0);

address.sin_family = AF_INET;

address.sin_addr.s_addr = inet_addr("192.168.0.123");

address.sin_port = htons(5678);

len = sizeof(address);

result = connect(sockfd,(struct sockaddr *)&address,len);

if(result == -1) {

perror("oops:client\n");

exit(1);

}

printf("请输入你要传输的数据\n");

gets(ch);

len = strlen(ch);

ch[len] = '\0';

printf("%d, %s\n", len, ch);

write(sockfd,ch,len+1);

close(sockfd);

}

exit(0);

return 0;

}

同样运行它:

0818b9ca8b590ca3270a3433284dd417.png

好吧,我不得不说整个流程是如此的简单,以至于我们都还没有过瘾呢。

socket编程的套路是很死的,难道不是吗?客户端和服务器端都是固定不变的编写套路,按招出牌就好,唯一的差别就在于不同的语言和系统之间可能编码不同、API不同而已。

这里只是一个引导而已,不过其中还是有很多可以学到,不如大端口、小端口的转换,不如发送字符串结束符的重要性等等。

希望这些能对你的学习有点帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值