socket函数

Can’t connect MySQL server through socket的解决方法

不羁岁月 提交于 2019-12-02 21:35:09
mysql ,Mysqldump,Mysqladmin,php连接 mysql 服务常会提示下面错误: 1 ERROR 2002 ( HY000 ) : Can 't connect to local MySQL server through socket ' / var / lib / mysql / mysql . sock ' ( 2 ) 这是由于修改mysql服务的了socket文件mysql.sock位置,而导致无法通过mysql socket文件连接到mysql服务引起的,具体解决办法如下: 1、查看mysql服务的socket文件位置: mysql socket文件的位置是在/etc/my.cnf中设置的,cat /etc/my.cnf内容如下: 1 2 3 4 [ mysqld ] datadir = / storage / db / mysql socket = / storage / db / mysql / mysql . sock user = mysql 其中socket等于的路径就是socket文件的位置,我们只要修改my.cnf文件,告诉mysql, mysqldump , mysqladmin mysql服务的socket位置在哪里就可以。 2 、修改my.cnf文件: 在/etc/my.cnf文件中添加如下内容,并重启mysqls服务

c++ TCP 获取客户端IP

前提是你 提交于 2019-12-02 19:42:56
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #define MAXLINE 4096 int main(int argc, char** argv) { int listenfd, connfd; struct sockaddr_in servaddr,caddr; char buff[4096]; int n; if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){ printf("create socket error: %s(errno: %d)\n",strerror(errno),errno); exit(0); } memset(&servaddr, 0, sizeof(servaddr)); memset(&caddr,0,sizeof(caddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666);

mysql_connect报告“No such file or directory”错误的解决方法

梦想的初衷 提交于 2019-12-02 19:24:52
在网上搜了一下,找到了这篇文章: mysql_connect and No such file or directory 。原来,我的apache/php是mac系统自带的,而mysql是通过MacPorts安装的,它的本地socket设置与默认的不一样,导致php无法找到mysql的socket文件。解决方法上面那篇文章也给了,这里简单翻译一下: 首先确定是mysql_connect()和mysql_pconnect()的问题,故障现象就是函数返回空,而mysql_error()返回“No such file or directory”。 写个phpinfo页面,找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket。 启动mysql,执行命令 STATUS; 记下UNIX socket的值。 如果2和3的值不一样,则打开php.ini(可以从phpinfo页面中找到php.ini的位置,默认是/private/etc/php.ini),将2中提到的三个配置项的值改成3的值。 重启apache。 来源: oschina 链接: https://my.oschina.net/u/575659/blog/110082

网络编程socket套接字及其使用(三)

跟風遠走 提交于 2019-12-02 15:43:22
这一节实例主要实现使用服务器和客户端进行通信。 设计流程图如下: 具体操作步骤如下: 创建服务器基本对话框: 项目------MFC App----Dialog base---Windows Sockets 添加控件: 添加成员变量及按键消息处理函数 1 ///////////////////////////////////////////////////////////////////////////// 2 // CServerDlg dialog 3 4 class CServerDlg : public CDialog 5 { 6 public: 7 CSocket serSock; 8 CSocket ChatSendSock; 9 // Construction 10 public: 11 CServerDlg(CWnd* pParent = NULL); // standard constructor 12 13 // Dialog Data 14 //{{AFX_DATA(CServerDlg) 15 enum { IDD = IDD_SERVER_DIALOG }; 16 CString m_edit; 17 //}}AFX_DATA 18 19 // ClassWizard generated virtual function overrides 20 //{

第八章 网络编程

巧了我就是萌 提交于 2019-12-02 15:42:46
网络编程 1.网络基础 用途:未来的web框架的学习 未来的工作场景做铺垫 两个运行中的程序如何传递信息? 通过文件 两台机器上的两个运行中的程序如何通信? 通过网络 网络应用开发架构 C/S client 客户端 server 服务端 例如:迅雷 qq 浏览器 飞秋 输入法 百度云 pycharm git VNC 红蜘蛛 各种游戏 B/S browser 浏览器 server 服务端 例如:淘宝 邮箱 各种游戏 百度 博客园 知乎 豆瓣 抽屉 统一程序的入口 B/S和C/S架构的关系:B/S是特殊的C/S架构 3.网卡:是一个实际存在计算机中的硬件 4.mac地址:每块网卡上都有一个全球独一无二的mac地址 5.交换机:链接多台机器并帮助通讯的物理设备,只认识mac地址。 6.协议:两台物理设备之间对于要发送的内容,长度,顺序的一些约定 7.ip地址: ipv4协议 4位的点分十进制,32位2进制表示 0.0.0.0 - 255.255.255.255 ipv6协议 6位的冒分十六进制 128位2进制表示 0:0:0:0:0:0-FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 8.公网ip:能被所有人访问到ip地址 9.内网ip:这些区间的ip地址公网不会使用,避免了公网ip和内网ip的重叠 192.168.0.0 - 192.168.255.255 172.16.0

TCP套接字选项SO_LINGER与TCP_LINGER2

寵の児 提交于 2019-12-02 15:22:37
概述 本文对两个LINGER相关的套接字选项进行源码层面的分析,以更明确其各自的作用和区别; man page SO_LINGER,该选项是socket层面的选项,通过struct linger结构来设置信息,如果启用该选项,那么使用close()和shutdown()(注意:虽然manpage这么写,但是shutdown内核代码流程中并未用到该选项)关闭socket,将会等待发送队列中的数据发送完成或者等待超时;如果不启用该选项,那么调用会立即返回,关闭任务在后台完成;注意:如果是调用exit()函数关闭socket,那么无论是否启用SO_LINGER选项,socket总会在后台执行linger等待; 1 SO_LINGER 2 Sets or gets the SO_LINGER option. The argument is a linger 3 structure. 4 5 struct linger { 6 int l_onoff; /* linger active */ 7 int l_linger; /* how many seconds to linger for */ 8 }; 9 10 When enabled, a close(2) or shutdown(2) will not return until 11 all queued messages for

TCP被动打开 之 第三次握手-接收ACK

馋奶兔 提交于 2019-12-02 14:47:52
假定客户端主动打开,发送syn包到服务器,服务器创建连接请求控制块加入到队列,进入TCP_NEW_SYN_RECV 状态,发送syn+ack给客户端,并启动定时器,等待客户端回复最后一个握手ack; tcp_v4_rcv上来的包,会判断连接状态,当状态为TCP_NEW_SYN_RECV时,期望得到对端发来的ack,以完成三次握手正式建立连接;函数通过调用tcp_check_req处理ack,成功会返回新建的子控制块,然后调用tcp_child_process进行进一步的处理,包括更新状态为已连接状态,通知正在等待的应用程序等; 1 int tcp_v4_rcv(struct sk_buff *skb) 2 { 3 /* 省略一些无关代码 */ 4 5 if (sk->sk_state == TCP_NEW_SYN_RECV) { 6 struct request_sock *req = inet_reqsk(sk); 7 struct sock *nsk; 8 9 /* 获取控制块 */ 10 sk = req->rsk_listener; 11 if (unlikely(tcp_v4_inbound_md5_hash(sk, skb))) { 12 sk_drops_add(sk, skb); 13 reqsk_put(req); 14 goto discard_it; 15 }

Day8 - Python网络编程 Socket编程

偶尔善良 提交于 2019-12-02 06:24:21
Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递。 我们知道网络 通信 都 是基于 ip+port 方能定位到目标的具体机器上的具体服务,操作系统有0-65535个端口,每个端口都可以独立对外提供服务,如果 把一个公司比做一台电脑 ,那公司的总机号码就相当于ip地址, 每个员工的分机号就相当于端口, 你想找公司某个人,必须 先打电话到总机,然后再转分机 。 建立一个socket必须至少有2端, 一个服务端,一个客户端, 服务端被动等待并接收请求,客户端主动发起请求, 连接建立之后,双方可以互发数据。 A network socket is an endpoint of a connection across a computer network . Today, most communication between computers is based on the Internet Protocol ; therefore most network sockets are Internet sockets . More precisely, a socket is a handle (abstract reference) that a local program can pass

C socket编程之select模型

陌路散爱 提交于 2019-12-02 06:15:25
在做Socket编程时,当要处理一个server对应多个client,这种可以每个客户端用一个线程来处理,但是客户端太多,程序的性能会降低。 Windows提供了select模型 ,很好的处理了一对多的模型。select的申明如下: Int WSAAPI select( _In_ int nfds, //0,无意义 _Inout_opt_ fd_set FAR * readfds, //检查可读性集合 _Inout_opt_ fd_set FAR * writefds, //检查可写性集合 _Inout_opt_ fd_set FAR * exceptfds,//进行异常检测的Socket _In_opt_ const struct timeval FAR * timeout //非阻塞模式中设置最大等待时间; 从msdn可查看参数的详细解释: Any two of the parameters, readfds , writefds , or exceptfds , can be given as null . At least one must be non- null , and any non- null descriptor set must contain at least one handle to a socket. In summary, a socket

从实践角度重新理解BIO和NIO

大城市里の小女人 提交于 2019-12-02 03:23:12
前言 这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这篇文章不会提到很多的概念,而是站在一个实践的角度,写一些我自己关于NIO的见解,站在实践过后的高度下再回去看概念,应该对概念会有一个更好的理解。 实现一个简易单线程服务器 要讲明白BIO和NIO,首先我们应该自己实现一个简易的服务器,不用太复杂,单线程即可。 为什么使用单线程作为演示 因为在单线程环境下可以很好地对比出BIO和NIO的一个区别,当然我也会演示在实际环境中BIO的所谓一个请求对应一个线程的状况。 服务端 public class Server { public static void main(String[] args) { byte[] buffer = new byte[1024]; try { ServerSocket serverSocket = new ServerSocket(8080); System.out.println("服务器已启动并监听8080端口"); while (true) { System.out.println(); System.out.println("服务器正在等待连接..."); Socket socket =