<<Linux 网络编程>>摘要

注意: 其中的大部分成员是网络字节序(大端字节序);

编程:

服务器先要做的事情:

socket() 初始化Socket

bind() 绑定本地端口

listen() 监听端口

accept() 响应客户端请求

一个例子

  客户端(Windows 系统, Java 环境)

public class xxx {
private static String host = "www.mylinux.net";
private static int port = 8848; public static void main(String[] args) throws Throwable {
Socket s = new Socket();
if (!s.isConnected()) {
System.out.println("正在连接服务器...");
try {
s.connect(new InetSocketAddress(host, port), 2000);
} catch (IOException e) {
System.out.println("连接超时!");
return;
}
System.out.println("连接成功!");
System.out.println(s);
}
}

  服务器端(Linux 系统, glibc环境)

 15         // socket
16 int sockfd = socket(AF_INET, SOCK_STREAM, 0);
17 if (sockfd == -1) {
18 perror("socket()");
19 return ;
20 }
21
22 // bind
23 struct sockaddr_in addr = { 0 };
24 addr.sin_family = AF_INET;
25 addr.sin_port = htons(8848);
26 //addr.sin_addr.s_addr = inet_addr("0.0.0.0");
27
28 if (bind(sockfd, (void *)&addr, sizeof(struct sockaddr)) != EXIT_SUCCESS) {
29 perror("bind()");
30 return ;
31 }
32
33 // listen
34 if (listen(sockfd, 5) != EXIT_SUCCESS) {
35 perror("listen()");
36 return ;
37 }
38
39 // accept
40 accept(sockfd, NULL, NULL);

  

  注意: bind() 过程中绑定地址不是本地回环地址 127.0.0.1, 而是 0x0, 这个IP相当于java中的this,代表当前设备的IP, 否则即使绑定成功了, 也只能在本地通过唯一IP访问。

Socket编程 (一)的更多相关文章

  1. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  2. java socket编程(li)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以 ...

  3. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  4. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  5. Linux下的C Socket编程 -- 获取对方IP地址

    Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...

  6. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

  7. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  8. Socket编程实践(2) Socket API 与 简单例程

    在本篇文章中,先介绍一下Socket编程的一些API,然后利用这些API实现一个客户端-服务器模型的一个简单通信例程.该例子中,服务器接收到客户端的信息后,将信息重新发送给客户端. socket()函 ...

  9. Socket编程实践(1) 基本概念

    1. 什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.TCP/IP协议的底层部分已经被内核实现了,而应用层是用户需要实现的,这部分程序工作在用户空间.用户空间的程序需要通 ...

  10. [转]C语言SOCKET编程指南

    1.介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等 ...

随机推荐

  1. 「洛谷5290」「LOJ3052」「十二省联考 2019」春节十二响【启发式合并】

    题目链接 [洛谷传送门] [LOJ传送门] 题目大意 给定一棵树,每次选取树上的一个点集,要求点集中的每个点不能是另一个点的祖先,选出点集的代价为点集中权值最大点的权值,问将所有点都选一遍的最小代价为 ...

  2. photoshop学习4

    蒙版 路径学习 一.蒙版 蒙版可以理解为一层在图层上的遮挡布,为什么要将图层遮住呢,有什么好处.好处在于容易编辑. 在一个图层上建立一个蒙版之后,可以用再删掉不需要的部分,从而露出原图层的部分.那么这 ...

  3. Ubuntu Server 18.04 网络设置不生效的解决

    在Ubuntu18.04中,传统的配置/etc/network/interfaces已无用https://www.cnblogs.com/dunitian/p/6658578.html 新方法:修改 ...

  4. react案例->新闻移动客户端--(react+redux+es6+webpack+es6的spa应用)

    今天分享一个react应用,应在第一篇作品中说要做一个react+redux+xxx的应用.已经做完一部分,拿出来分享.github地址为:点我就可以咯~ 这里实现了一个新闻移动站的spa.本来想写p ...

  5. 手把手教你用1行代码实现人脸识别 --Python Face_recognition

    环境要求: Ubuntu17.10 Python 2.7.14 环境搭建: 1. 安装 Ubuntu17.10 > 安装步骤在这里 2. 安装 Python2.7.14 (Ubuntu17.10 ...

  6. Django(十八)Model操作补充

    参考博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html 1. 创建类 class UserInfo(model.Model): age = ...

  7. linux提取第一列且删除第一行(awk函数)

    如下文件所示,只想提取红框中的内容,即进行提取第一列,且去除第一行的操作 则用到下列命令行: awk 'NR == 1 {next} {print $1}' file.txt > file_co ...

  8. pytest 5. fixture之yield实现teardown

    前言: 1.前面讲的是在用例前加前置条件,相当于setup,既然有setup那就有teardown,fixture里面的teardown用yield来唤醒teardown的执行 看以下的代码: #!/ ...

  9. KMP之计算Next数组

    KMP的Next数组:模式串的前缀与后缀的“相交”长度 KMP算法步骤: 1.先算next数组 2.若失配(此时模式串下标为j),利用Next数组求出失配后滑动的新位置 a.Next[j] \geq ...

  10. (计算几何 线段判交) 51nod1264 线段相交

    1264 线段相交 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交,输出"Yes",否则输出"No".   ...