#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通信的简单例子相关推荐

  1. linux java测试工具_Linux下Java虚拟机状态监测工具

    Linux下Java虚拟机状态检测工具 工具名称: jps     JVM Process Status Tool - Lists instrumented HotSpot Java virtual ...

  2. linux java 环境配置_linux下java开发环境配置

    jdk 1 下载jdk: jdk-6u22-linux-i586.bin 2 增加可执行权限: chmod +x jdk-6u22-linux-i586.bin 3 复制到/usr下 sudo cp  ...

  3. linux java javac版本_linux下java 和 javac version 不一致问题

    centos下 我新安装了个jdk1.7的版本 ,vi profile 之后 java -version 是新版本,想在看看javac -version 发现还是1.6的 之前安装了1.6的 那好咱就 ...

  4. 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 ...

  5. socket编程报异常java.io.EOFException

    socket编程报异常java.io.EOFException 参考文章: (1)socket编程报异常java.io.EOFException (2)https://www.cnblogs.com/ ...

  6. vss2010c语言怎么运行,在Linux下使用gcc运行C语言程序

    Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具.本教程毫不犹豫地使用GCC来编译C程序. ...

  7. 怎么看有没有java环境变量_linux查看java环境变量

    本文收集整理关于linux查看java环境变量的相关议题,使用内容导航快速到达. 内容导航: Q1:linux 怎么修改java环境变量 纯java开发的软件在linux下面也可以应用自如.那么首先就 ...

  8. Linux 下编译并运行C语言程序

    Linux下编译并运行C语言程序 ,以Centos 系统为例 1>新建一个hello.c文件 可以直接用图形用户界面新建也可以使用命令新建. 用命令行的话,要用到Linux下的vi编辑器的相关命 ...

  9. 网络协议 11 - Socket 编程(下):眼见为实耳听为虚

    网络协议 11 - Socket 编程(下):眼见为实耳听为虚 原文:网络协议 11 - Socket 编程(下):眼见为实耳听为虚 系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP ...

最新文章

  1. 程序员的创业陷阱:接私活
  2. (chap4 IP协议) 全局地址和私有地址
  3. 为什么现在腿会抽筋了?
  4. ROBOT STUDIO 学习笔记
  5. 牛客 - tokitsukaze and Inverse Number(树状数组+逆序对定理)
  6. angular-过滤器
  7. 用于J2EE开发的Cloud IDE
  8. [vue-cli]怎么使用vue-cli3创建一个项目?
  9. mysql dba证书挂靠_这7种情况都叫“证书挂靠”!看看你是否在挂证的边缘试探?...
  10. 打破双亲委派么,怎么打破_快速行动,不要打破事物
  11. python中urlLib的使用
  12. Bailian4123 马走日【DFS】
  13. webconfig.xml文件golbalization节的作用
  14. slickedit背景颜色和当前关键字高亮
  15. 摘要加密算法——MD5加密
  16. php 等额本息+等额本金生成公式
  17. 在HTML中禁止IE缓存
  18. 笔记本键盘如何摇身一变机械键盘?
  19. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java天气预报系统97z40
  20. Linux 命令行模式下退出 vim

热门文章

  1. 数据库中的行锁和表锁
  2. Python学习之路 (六)爬虫(五)爬取拉勾网招聘信息
  3. centos 6.8 + postgresql 9.6 + file_fdw
  4. Yii2 获取URL的一些方法
  5. HttpRequest获取文件流,HttpResponse输出文件流
  6. 第一次接触 SharpHsql(纯C#开源数据库引擎)
  7. 科学家研发多模态生物识别系统,基于脑纹独特性来防范身份欺骗
  8. 浅谈 Python 的 with 语句
  9. 一文读懂P Quant与 Q Quant ,量化交易与金融工程
  10. 对vector等STL标准容器进行排序操作