linux中的socket编程,linux中socket编程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
客户端:include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 1234
#define MAXDATASIZE 1000 /**/ int main(int argc, char *argv[])
{
int sockfd, recvbytes;
int client_fd;
char buf[MAXDATASIZE];
struct hostent *host;
struct sockaddr_in serv_addr;
if(argc < 2)
{
fprintf(stderr,"Please enter the server's hostname!\n ");
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
herror("gethostbyname error!");
exit(1);
}
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket creat error!");
exit(1);
}
bzero(&serv_addr, sizeof (serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
// bzero(&serv_addr, sizeof (serv_addr));
if(connect(sockfd, (struct sockaddr *)&serv_addr,
sizeof(struct sockaddr)) == -1)
{
perror("connect error!");
exit(1);
}
while(1)
{
if(send(sockfd, "Hello, you are connected! ", 26, 0) == -1)
{ perror("send error !");}
}
close(sockfd);
return 0;
}
服务器端:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 1234 //**//
#define BACKLOG 10 //* *//
#define MAXDATASIZE 1000
int main(void)
{
int sockfd;
int client_fd,recvbytes;
char buf[MAXDATASIZE];
socklen_t sin_size;
struct sockaddr_in my_addr; /* local IP addr*/
//struct sockaddr_in remote_addr; /*clint IP addr*/
if((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket creat error!");
exit(1);
}
bzero(&my_addr, sizeof (my_addr));
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
{
perror("bind error!");
exit(1);
}
if(listen(sockfd, BACKLOG) == -1)
{
perror("listen error !");
exit(1);
}
while(1)
{
sin_size = sizeof(struct sockaddr_in);
if((client_fd = accept(sockfd, (struct sockaddr *)&my_addr, &sin_size)) == -1)
{
perror("accept error");
continue;
}
} while (1)
{
printf("ok\n");
if((recvbytes=recv(sockfd, buf, MAXDATASIZE, 0)) ==-1)
{
perror("recv error!");
exit(1);
}
buf[recvbytes] = '\0';
printf("Received: %s\n",buf);
} close(client_fd);
}
初学socket,请高人指点错误,现在不提示错误,但是接受不到东西
linux中的socket编程,linux中socket编程相关推荐
- linux socket eof,Linux 中的 EOF 到底是什么?
EOF 的定义 EOF 是 end of file 的缩写,表示"文字流"(stream)的结尾.这里的"文字流",可以是文件(file),也可以是标准输入(s ...
- Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程
目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...
- Windows Socket和Linux Socket编程的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=1586 2. ...
- 【Linux网络编程学习】socket API(socket、bind、listen、accept、connect)及简单应用
此为牛客Linux C++课程和黑马Linux系统编程笔记. 1. 什么是socket 所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象. 一个套接字就是网络 ...
- socket编程 —— 非阻塞socket (转)---例子已上传至文件中
在上一篇文章 <socket编程--一个简单的例子> http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单 ...
- 【网络编程入门】使用socket在Linux下实现即时通信软件
使用socket在Linux下实现即时通信软件 在前一篇文章中讲到了如何使用winsock:[网络编程入门]在C++中使用Windows TCP Sockets,也算是勉强入门了吧,接下来自己写一下在 ...
- Linux系统下一切皆文件,socket编程浅析
"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...
- 【网络编程】Linux tcpdump命令详解---编辑中
目录 即看即用 详细说明 简介 输出信息含义 链路层头 TCP 数据包 UDP 数据包 SMB/CIFS 解码 AFS 请求和回应 KIP AppleTalk协议 IP 数据包破碎 时间戳 反向过滤 ...
- Linux网络编程--TCP中的三次握手和四次挥手
服务器编程和客户端编程的大致流程如下: 三次握手是在客户端中的connect中完成的,具体如下: 那么上述说到的SYN ACK这些是什么东西呢? 上述的截图取自<Linux高性能服务器编 ...
- java list 去重 相同的相加_Java 中的数据流和函数式编程 | Linux 中国
学习如何使用 Java 8 中的流 API 和函数式编程结构.-- Marty Kalin 当 Java SE 8(又名核心 Java 8)在 2014 年被推出时,它引入了一些更改,从根本上影响了用 ...
最新文章
- img文件解包工具_使用tar归档命令,就不怕文件多!
- java中date类型如何赋值_一文读懂java中的Reference和引用类型
- Ubuntu 10.10, 11.04, 11.10这三个版本无法从优盘启动
- [翻译] .NET Core 3.0 Preview 9 发布
- 树莓派 zero linux,树莓派 zero基本调试
- E20180219-hm-xa
- html的表单图形验证码怎么做,django中简单图形验证码实现
- 使用Apache HttpComponents访问https接口(及老版本DefaultHttpClient deprecated)
- IMP-00009:异常结束导出文件解决方案
- 【Flink】 Flink 源码之 Buffer Timeout优化
- ACM竞赛数论知识积累
- java替换特殊字符_Java处理特殊字符替换(正则表达式)
- 注册github邮箱验证收不到邮件问题
- x86服务器能装64位系统吗,x86处理器能装64位系统吗_64位系统装32位的可以么
- P5030 长脖子鹿放置
- 什么是动态域名解析服务?
- 使用unity实现计算器功能
- apache防止恶意解析
- 签offer和签三方协议的不同
- Qt下载网络图片到桌面
热门文章
- 如果你是程序员 别说你没有用过这五大编程工具
- 均胜群英:PC+移动端数字化管理,两年降本7%,人均产值提高300%
- 新图表请查收!看够了炫酷大屏,这次来点小清新风格!
- freeeim源码一个个投篮的命中
- 飞秋下载2010正式版最新
- 程序员要掌握的20个实用技巧
- 女程序员口述:我活最好,年薪35万!
- vs编译c语言停止工作运行库mt,vc++编译时运行库选择(/MT/MTd/MD/MDd)
- springboot日志配输出路径配置_SpringBoot日志配置详解
- OpenCV傅立叶变换