linux中c语言和php语言通信代码UDP&TCP

http://blog.chinaunix.net/uid-24015214-id-2644174.html

UDP方式通信
 
服务器端server.c
 /*server.c*/
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h> #define SERV_PORT 8000 int main()
{
int sockfd,n,servaddr_len;
char * server_ip = "127.0.0.1";
char buf[];
struct sockaddr_in server,client; sockfd = socket (AF_INET,SOCK_DGRAM,); bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT); servaddr_len = sizeof(server); bind(sockfd,(struct sockaddr *) &server,servaddr_len);
listen(sockfd,);
while()
{
printf("等待读取数据.......\n"); servaddr_len = sizeof(client);
n = read(sockfd,buf,sizeof(buf));
write(sockfd,buf,n);
printf("读取的数据为:%s\n",buf);
bzero(buf,sizeof(buf));
}
close(sockfd);
return ;
}
 
 
客户端client.php
 <?php
$server_ip="127.0.0.1";
$port = 8000;
if($_POST['submit'])
{
$buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
socket_write($sockfd,$buf,strlen($buf))or die("写入错误"); socket_read($sockfd,$buf,80);
echo $buf;
$buf="";
socket_close($sockfd);
}
?>
<form action="client.php" method="post">
请选则发送方式:<br><input type=text name="buf">
<input type=submit name="submit" value="发送">
</form>
 
server.c文件通过gcc编译器编译
 
client.php通过浏览器运行
 
 
 
TCP方式
 
服务器端
 /*server.c*/
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h> #define SERV_PORT 8000 int main()
{
int sockfd,n,servaddr_len,client_len,connfd;
char * server_ip = "127.0.0.1";
char buf[];
struct sockaddr_in server,client; sockfd = socket (AF_INET,SOCK_STREAM,); bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT); servaddr_len = sizeof(server);
client_len=sizeof(client); bind(sockfd,(struct sockaddr *) &server,servaddr_len);
listen(sockfd,);
while()
{
bzero(buf,sizeof(buf));
printf("等待读取数据.......\n");
connfd=accept(sockfd,(struct sockaddr *)&client,&client_len);
n = read(connfd,buf,sizeof(buf));
// write(connfd,buf,n);
printf("读取的数据为:%s\n",buf); }
close(sockfd);
return ;
}
 
 
客户端
 <?php
$server_ip="127.0.0.1";
$port = 8000;
if($_POST['submit'])
{
$buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
socket_write($sockfd,$buf,strlen($buf))or die("写入错误"); $a=socket_read($sockfd,80);
echo $a;
$buf="";
socket_close($sockfd);
}
?>
<form action="tcpclient.php" method="post">
请选则发送方式:<br><input type=text name="buf">
<input type=submit name="submit" value="发送">
</form>
 
注意:1、tcp方式要设置安全级别及防火墙
    
       centOS5.4设置方法为:系统->管理->安全级别及防火墙->SElinux选项卡
                        设置为允许即可
     2、查看httpd_can_network_connect选项设置为on
       centOS5.4设置方法为:在终端执行setsebool httpd_can_network_connect on 即可
本人推荐使用第二种方法
    
 
     
 

linux中c语言和php语言通信代码UDP&TCP的更多相关文章

  1. 在linux中安装git,并将代码发布到github

    楼主Git小白,今天刚刚学习了git,虽然在工作中也许用不到,但是在学习的时候肯定会用到的,毕竟一个程序员首先就要整理自己的知识点,将美丽的代码分享与大家. 楼主是将Git安装在阿里云的centos7 ...

  2. linux中history加入显示时间命令代码

    source 空格 配置文件,则配置立即生效,这里的soruce也可以用英文状态下的点即“.”代替 历史命令history -w将现在的命令记录写入到history里面 如果在history里面加上时 ...

  3. linux grep find查找文件夹、代码中的某行/字符串

    本文转载于:https://blog.csdn.net/Mr_Cat123/article/details/80541658 在Linux中,由于文件很多,代码很长,可能我们只知道其中的一两个字符串, ...

  4. Linux中的两个经典宏定义:获取结构体成员地址,根据成员地址获得结构体地址;Linux中双向链表的经典实现。

    倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生.这两个宏最初是极客写出的,后来在Linux内核中被推广使用. 1. offse ...

  5. Linux 中使用 QT Charts 显示温度传感器

    前一篇笔记中实现了QT的Label控件显示CPU的温度,只能显示当前的温度,并不能反映CPU温度的变化情况,现在来实现使用QT Charts的曲线图实现一个实时曲线来显示CPU的温度. 添加对Qt C ...

  6. Linux中查找最耗性能的JAVA代码

    在这里总结一下查找Linux.Java环境下最耗CPU性能的代码段的方法.基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程).使用jstack把java线程堆栈给dump下来.然后,在堆 ...

  7. C语言和C++中动态申请内存

      在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h>  ...

  8. Linux中 SonarQube代码质量管理平台以及C++插件安装

    SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube安装 1.环境准备 (1)sonarQube 下载地址https://www.sonarqu ...

  9. C语言和sh脚本的杂交代码

    在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示.在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了. #if 0 echo "He ...

随机推荐

  1. ModelForm的简单使用-注册用modelform编写

    1.前端的ajax代码不用改动 2.modelform,在原来基础上稍作改动 from django import forms from app01.models import UserInfo fr ...

  2. P2279 [HNOI2003]消防局的设立[树形dp]

    题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状 ...

  3. JavaScript和JQuery之战再续

    之前写过关于JavaScript和Jquery的之间的比较,现在再看比较偏向于理论知识,还不是很理解.经过这一段时间的项目的锻炼,对JQuery有了新的认识. 原生JavaScript和jQuery的 ...

  4. discuz论坛门户资讯入库接口【原创】

    最近想打造一个社区门户站点,所以写了这个入库接口,可以对接数据入库. <?php /* * Discuz x3.2 门户免登陆发布接口 * 2018-08-10 * Copyright 68xi ...

  5. GITHUB下载ANDRIOD源码

    1 git clone https://android.googlesource.com/device/common.git 2 git clone https://android.googlesou ...

  6. bzoj 2480——扩展BSGS

    题意 给定 $a,b$ 和模数 $p$,求整数 $x$ 满足 $a^x \equiv  b(mod \ p)$,不保证 $a,p$ 互质. (好像是权限题,可见洛谷P4195 分析 之前讲过,可以通过 ...

  7. BZOJ 2502 清理雪道(有源汇上下界最小流)

    题面 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞机, ...

  8. C# 避免程序重复启动

    using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using ...

  9. C# 打开 EXE 文件

    命名空间是using System.Diagnostics; 在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Proc ...

  10. Oracle 日期型 将timestamp类型转换为date类型

    Oracle将timestamp类型转换为date类型有三种方法 1.使用to_char先转为字符型,在使用to_date再转为日期型 select to_date(to_char(systimest ...