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编程相关推荐
- android c++ socket编程,C++ 中 socket编程实例详解
C++ 中 socket编程实例详解 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的soc ...
- Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程
目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...
- Linux下基于C/C++的Socket编程基础
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Internet上的TCP/IP网络编程, ...
- 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在Linux下实现即时通信软件
使用socket在Linux下实现即时通信软件 在前一篇文章中讲到了如何使用winsock:[网络编程入门]在C++中使用Windows TCP Sockets,也算是勉强入门了吧,接下来自己写一下在 ...
- linux多网卡网络编程,Linux网络编程之Socket初探
Socket由来 Socket 的英文原意就是"孔"或"插座",现在,作为 BSD UNIX 的进程通讯机制,取其后一种意义.一起看下网络编程里说的socket ...
- Linux Socket C语言网络编程:SCTP Socket
Table of Contents SCTP介绍 SCTP(流控制传输协议) SCTP服务 SCTP封包格式 SCTP,TCP和UDP的比较 拥塞 开环拥塞控制 闭环拥塞控制 SCTP协议的各个功能如 ...
- python网络编程linux清华_Python网络编程篇之socket
参数一:地址簇 socket.AF_INET IPv4(默认) socket.AF_INET6 IPv6 socket.AF_UNIX 只能够用于单一的Unix系统进程间通信 参数二:类型 socke ...
- 【Linux网络编程】TCP网络编程中connect listen和accept三者之间的关系
00. 目录 文章目录 00. 目录 01. TCP服务端和客户端流程 02. connect函数 03. listen函数 04. 三次握手 05. accept函数 06. 附录 01. TCP服 ...
最新文章
- 1033 To Fill or Not to Fill (25 分)
- php开发用户登录模块,使用CodeIgniter开发用户登录注册模块
- redis StackExchange 主备 实现 demo
- 适配器和绑定 没找到_亚马逊如何收款?附亚马逊收款绑定流程
- 如何使用eclipse进行嵌入式Linux的开发
- 大数据应用项目创新大赛_全国高校大数据应用创新大赛
- php 异步执行shell脚本
- 计算机网络为什么要分层?
- kali攻击手机_kali linux入侵安卓手机
- gin 渲染不同目录下的模板(支持多层目录)
- 非度量多维标度_R软件包vegan教程 2.1非度量多维度标度变换
- 演讲实录 :某大型股份制商业银行的容器化探索之路
- vscode html 英文感叹号(!+ tap)快速模板 骨架 无法使用 替代办法
- 第一天:2个法则,你的第一桶金可以这么来
- 如何设计一个简单的网站首页
- 交换机与路由器的配置
- AutoVue使用教程:如何在64位Linux上安装AutoVue
- 服务器加内存系统,服务器加内存的方法
- 没技术的人,看看这5个生意,虽然不起眼,很多人却在悄悄地赚钱
- 等保测评(linux)
热门文章
- for循环利用可迭代对象与迭代器完成工作的本质
- mysql linux 还原_linux下java还原mysql数据库
- 文末送书 | Facebook:易于解释的神经元可能会阻碍神经网络的学习
- MSON,让JSON序列化更快
- 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置
- 论文浅尝 | XQA:一个跨语言开放域问答数据集
- 技术动态 | TechKG:一个面向中文学术领域的大型知识图谱
- Android官方开发文档Training系列课程中文版:管理音频播放之管理音频焦点
- Android官方开发文档Training系列课程中文版:数据存储之文件存储
- 虚拟机的ip地址为什么会发生变化