linux socket编程实例
/*
============================================================================
Name : client.c
Author : liusiyuan
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/ #include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h> /* inet(3) functions */ int handle(int fd); int main(void) { int nsd;
char buf[]; char * myaddr = "127.0.0.1";
struct sockaddr_in addr; printf("welcome to echo client\n");
nsd = socket(AF_INET, SOCK_STREAM, );
printf("connect start1 \n");
//bzero(addr, sizeof(*addr));
memset(&addr,,sizeof(addr));
printf("connect start2 \n");
addr.sin_family = AF_INET;
addr.sin_port = htons();
addr.sin_addr.s_addr=inet_addr(myaddr); printf("connect start3 \n");
if (connect(nsd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) < ) {
printf("connect error \n");
return -;
} sleep();
printf("handle start\n");
handle(nsd);
close(nsd);
return EXIT_SUCCESS;
} int handle(int fd) { char sendl[], rev[]; int retn; for (;;) { memset(sendl,,sizeof(sendl));
memset(rev,,sizeof(rev));
if (fgets(sendl, , stdin) == NULL) {
break;
}
//
printf("wirte start\n");
write(fd, sendl, strlen(sendl));
read(fd, rev,strlen(rev)); } return ;
}
/*
============================================================================
Name : server.c
Author : liusiyuan
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdlib.h>
#include <pthread.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h> /* inet(3) functions */ #include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <string.h> int handle(int point); int main(void) {
int sfd, ind;
struct sockaddr_in addr;
struct sockaddr_in clent;
char resv[], sendbuf[];
char buf[];
char * myaddr = "127.0.0.1"; int ret; // 返回值设置
socklen_t lent;
int pid;
addr.sin_family = AF_INET; //IPv4 Internet protocols addr.sin_port = htons(); //这里输入服务器端口号 addr.sin_addr.s_addr = inet_addr(myaddr);
; //INADDR_ANY表示本机IP //獲取socket描述符,IPV4asd
printf("socket start \n");
sfd = socket(AF_INET, SOCK_STREAM, ); if (sfd < ) {
printf("socket error \n");
return -;
}
printf("bind start \n");
//将套接子与指定端口链接
if (bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr)) < ) {
printf("bind error \n");
return -;
} //监听套接子
printf("listen start \n");
if (listen(sfd, ) < ) {
printf("listen error \n");
return -;
} for (;;) {
//接受来自客户端的信息
printf("accept start \n");
memset(&clent, , sizeof(clent));
lent = sizeof(clent);
ind = accept(sfd, (struct sockaddr *) &clent, &lent);
if (ind < ) {
printf("accept error %d \n", ind);
return -;
} printf("infor \n");
printf("clent addr%s porit %d\n",
inet_ntop(AF_INET, &clent.sin_addr, buf, sizeof(buf)),
ntohs(clent.sin_port)); pid = fork(); if (pid == ) {
//子进程
close(sfd);
handle(ind);
} else if (pid < ) {
//error
close(ind);
} else {
//父进程
}
} return EXIT_SUCCESS; } int handle(int point) { int retn;
char buf[]; for (;;) {
retn = read(point, buf, sizeof(buf));
if (retn < ) {
printf("read error \n");
close(point);
break;
} else if (retn == ) {
printf("client exit \n");
close(point);
break;
} printf("client:%s\n", buf); if (strcmp("exit", buf) == ) {
printf("exit \n");
close(point);
return ;
}
}
return ;
}
linux socket编程实例的更多相关文章
- linux下socket编程实例
linux下socket编程实例一.基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的.网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符.s ...
- 【转】netlink socket编程实例
[转]netlink socket编程实例 转自:http://blog.chinaunix.net/uid-14753126-id-2983915.html 关于Netlink IPC方式的介绍,请 ...
- linux内核模块编程实例
linux内核模块编程实例 学号:201400814125 班级:计科141 姓名:刘建伟 1.确定本机虚拟机中的Ubuntu下Linux的版本 通过使用命令uname -a/uname -r/una ...
- Linux Socket 编程简介
在 TCP/IP 协议中,"IP地址 + TCP或UDP端口号" 可以唯一标识网络通讯中的一个进程,"IP地址+端口号" 就称为 socket.本文以一个简单的 ...
- Linux socket 编程中存在的五个隐患
前言: Socket API 是网络应用程序开发中实际应用的标准 API.尽管该 API 简单,但是 开发新手可能会经历一些常见的问题.本文识别一些最常见的隐患并向您显示如何避免它 ...
- [转] - linux下socket编程实例
一.基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的.网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符.socket也有一个类似于打开文件 ...
- Linux Socket编程
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...
- Linux Socket编程(不限Linux)【转】
转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几 ...
- Linux Socket编程(不限Linux)
"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...
随机推荐
- Guid与id区别
一.产生Guid的方法 1.SqlServer中使用系统自带的NEWID函数: select NEWID() 2.C#中,使用Guid类型的NewGuid方法: Guid gid; ...
- 《深入浅出Node.js》第5章 内存控制(未完)
@by Ruth92(转载请注明出处) 第5章 内存控制 基于无阻塞.事件驱动建立的 Node 服务,具有内存消耗低的优点,非常适合处理海量的网络请求. 内存控制正是在海量请求和长时间运行的前提下进行 ...
- DNS记录类型介绍(A记录、MX记录、NS记录等)
DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 建站名词解释:DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 泛域名 泛解析 域 ...
- android 中theme和style的语法相关
1.theme和style都是一组属性的集合,用于定义文本.颜色.大小等显示风格.他们都是资源,可以用android系统级别的一些默认的风格和主题资源,你也可以自定义你自己的主题和风格资源. 2.自定 ...
- java虚拟机之回收方法区
在java虚拟机中并没有规范规定需要对方法区即是新生代进行垃圾回收, 主要是这些区域的回收性价比极低, 一般在新生代中一般垃圾回收中可以达到70%到95%. 其中永久代中的垃圾回收主要回收的是两个 ...
- PHP character garbled
MySql 控制台查询时出现乱码 Database&Table 的字符集 于Mysql控制台显示的字符集不一样 右键单击mysql控制台边框 单击属性 查看当前代码页的字符集模式是否于数 ...
- 第五章 搭建S3C6410开发板测试环境
开发板是开发和学习嵌入式技术的主要设备.在这章中介绍了S3C6410开发板,它是三星公司推出的一款低功耗.高性价比的RISC处理器.安装串口调试工具:minicom.它的安装步骤:第1步:检测当前系统 ...
- UVa 12118 检查员的难题(dfs+欧拉回路)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- SQLSERVER不带JOIN的语句与带JOIN语句的区别
//1.连接两个表查询 SELECT * FROM table1 t1,table2 t2 //2.连接两个表查询 SELECT * FROM table1 join table2 on table1 ...
- 查看旧版jexus命令
查看jexus版本 curl http://localhost/info