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. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...
随机推荐
- SDK截图(三):压缩位图之理论准备篇
压缩位图我们使用简单的行程长度编码的方法,详情参考<windows程序设计>15章之DIB压缩. 在BITMAPINFOHEADER结构中有两个和位图压缩有关的字段,分别是biCompre ...
- D - 图论
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Descr ...
- python自动化框架nose
python除了unittest,还有一款更快捷的nose,nose可以说是对unittest的一种简化吧 但是他不需要unittest那种必须有固有的格式,他只需要文件,类名,方法名等含有test就 ...
- stm32通用定时器步骤
- 使用syncthing进行双机文件同步
使用syncthing进行双机文件同步 syncthing是一款开源的文件同步软件,可以 syncthing安装 tar -zxvf syncthing-linux-amd64-v0.12.15.ta ...
- NodeOS操作系统
导读 我想大多数人听说过 Node.js,但是你听说过 NodeOS 吗?一个用 Node.js 写的操作系统,NodeOS 用 Linux 内核来处理各种底层任务,比如硬件通讯什么的,但是除此之外, ...
- [读书笔记]java中的volatile关键词
以下内容大多来自周志明的<深入理解Java虚拟机>. 当一个变量被volatile修饰后,它将具备两种特性: 1. 保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变 ...
- 【转载】oracle dbms_metadata.get_ddl的使用方法总结
转自:http://www.jb51.net/article/39715.htm dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下. 注意:在sqlplus里,为了更 ...
- 深入理解javascript--笔记
书写可维护的代码 1,最小全局变量 在js中不用声明变量就可以直接使用,因此注意不要没有声明就使用.(无意中创建的全局变量)比如使用任务链进行var声明.var a=b=12;正确写法为var ...
- Jquery面试题
1.改变一个标签中的属性的值? 分为两种情况: 改变style中的css样式属性值: $("ID").css({color:red,font-size:30px....}); ...