linux java socket编程_linux下java程序与C语言程序通过SOCKET通信的简单例子
#include int sockfd,newfd;
void *read_socket();
int main()
{
int ret;
pthread_t read_tid,write_tid;
struct sockaddr_in server_addr;
server_addr.sin_family=AF_INET;/*设置域为IPV4*/
server_addr.sin_addr.s_addr=INADDR_ANY;/*绑定到 INADDR_ANY 地址*/
server_addr.sin_port=htons(5678);/*通信端口号为5678,注意这里必须要用htons函数处理一下,不能直接写5678,否则可能会连不上*/
sockfd=socket(AF_INET,SOCK_STREAM,0);
if (sockfd<0)
{
printf("调用socket函数建立socket描述符出错!\n");
exit(1);
}
printf("调用socket函数建立socket描述符成功!\n");
ret=bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(server_addr));
perror("server");
if (ret<0)
{
printf("调用bind函数绑定套接字与地址出错!\n");
exit(2);
}
printf("调用bind函数绑定套接字与地址成功!\n");
ret=listen(sockfd,4);
if (ret<0)
{
printf("调用listen函数出错,无法宣告服务器已经可以接受连接!\n");
exit(3);
}
printf("调用listen函数成功,宣告服务器已经可以接受连接请求!\n");
newfd=accept(sockfd,NULL,NULL);/*newfd连接到调用connect的客户端*/
if (newfd<0)
{
printf("调用accept函数出错,无法接受连接请求,建立连接失败!\n");
exit(4);
}
printf("调用accept函数成功,服务器与客户端建立连接成功!\n");
/** 服务器端建立一个线程,负责从socket读取数据,当然此处并不一定非要建立一个新线程,直接在原线程中写也可以 **/
pthread_create(&read_tid,NULL,read_socket,NULL);
/********************* 令原线程睡眠 ************************/
while(1)
{
sleep(10000);
}
}
/****************** 从socket读取数据 ********************/
void *read_socket()
{
int recv_num,recv_num_total=0;
char recv_buf[50];
while (1)
{
memset(recv_buf,0,sizeof(recv_buf));/*清空一下recv_buf缓存区*/
recv_num=recv(newfd,recv_buf,26,0);
if (recv_num<0)
printf("服务器端:调用recv接收失败!\n");
else if(recv_num>0)
{
recv_num_total+=recv_num;
printf("服务器端:调用recv接收成功!本次接收到%d个字节,内容为:\"%s\"。共收到%d个字节的数据。\n",recv_num,recv_buf,recv_num_total);
sync();
}
else/*收到数据为0,表明服务器与客户端的连接已经中断*/
{
printf("服务器端:与客户端的连接已中断,当前共收到%d个字节的数据。服务器将再次等待客户端的连接。\n",recv_num_total);
newfd=accept(sockfd,NULL,NULL);/*当客户端退出后,再次开始接收客户端的连接*/
}
sleep(1);
}
}
linux java socket编程_linux下java程序与C语言程序通过SOCKET通信的简单例子相关推荐
- linux java测试工具_Linux下Java虚拟机状态监测工具
Linux下Java虚拟机状态检测工具 工具名称: jps JVM Process Status Tool - Lists instrumented HotSpot Java virtual ...
- linux java 环境配置_linux下java开发环境配置
jdk 1 下载jdk: jdk-6u22-linux-i586.bin 2 增加可执行权限: chmod +x jdk-6u22-linux-i586.bin 3 复制到/usr下 sudo cp ...
- linux java javac版本_linux下java 和 javac version 不一致问题
centos下 我新安装了个jdk1.7的版本 ,vi profile 之后 java -version 是新版本,想在看看javac -version 发现还是1.6的 之前安装了1.6的 那好咱就 ...
- java linux res很高_Linux下Java进程RES是1.6G,但是jmap里用到的才五百多M,剩下的1.1G左右是去哪了?...
具体信息如下: RES是1.6G PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28527 root 20 0 12.1g 1.6g 13 ...
- socket编程报异常java.io.EOFException
socket编程报异常java.io.EOFException 参考文章: (1)socket编程报异常java.io.EOFException (2)https://www.cnblogs.com/ ...
- vss2010c语言怎么运行,在Linux下使用gcc运行C语言程序
Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具.本教程毫不犹豫地使用GCC来编译C程序. ...
- 怎么看有没有java环境变量_linux查看java环境变量
本文收集整理关于linux查看java环境变量的相关议题,使用内容导航快速到达. 内容导航: Q1:linux 怎么修改java环境变量 纯java开发的软件在linux下面也可以应用自如.那么首先就 ...
- Linux 下编译并运行C语言程序
Linux下编译并运行C语言程序 ,以Centos 系统为例 1>新建一个hello.c文件 可以直接用图形用户界面新建也可以使用命令新建. 用命令行的话,要用到Linux下的vi编辑器的相关命 ...
- 网络协议 11 - Socket 编程(下):眼见为实耳听为虚
网络协议 11 - Socket 编程(下):眼见为实耳听为虚 原文:网络协议 11 - Socket 编程(下):眼见为实耳听为虚 系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP ...
最新文章
- 程序员的创业陷阱:接私活
- (chap4 IP协议) 全局地址和私有地址
- 为什么现在腿会抽筋了?
- ROBOT STUDIO 学习笔记
- 牛客 - tokitsukaze and Inverse Number(树状数组+逆序对定理)
- angular-过滤器
- 用于J2EE开发的Cloud IDE
- [vue-cli]怎么使用vue-cli3创建一个项目?
- mysql dba证书挂靠_这7种情况都叫“证书挂靠”!看看你是否在挂证的边缘试探?...
- 打破双亲委派么,怎么打破_快速行动,不要打破事物
- python中urlLib的使用
- Bailian4123 马走日【DFS】
- webconfig.xml文件golbalization节的作用
- slickedit背景颜色和当前关键字高亮
- 摘要加密算法——MD5加密
- php 等额本息+等额本金生成公式
- 在HTML中禁止IE缓存
- 笔记本键盘如何摇身一变机械键盘?
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java天气预报系统97z40
- Linux 命令行模式下退出 vim
热门文章
- 数据库中的行锁和表锁
- Python学习之路 (六)爬虫(五)爬取拉勾网招聘信息
- centos 6.8 + postgresql 9.6 + file_fdw
- Yii2 获取URL的一些方法
- HttpRequest获取文件流,HttpResponse输出文件流
- 第一次接触 SharpHsql(纯C#开源数据库引擎)
- 科学家研发多模态生物识别系统,基于脑纹独特性来防范身份欺骗
- 浅谈 Python 的 with 语句
- 一文读懂P Quant与 Q Quant ,量化交易与金融工程
- 对vector等STL标准容器进行排序操作