思路超简单的Android Socket 通信 Demo 注释详细

本文提供了一个思路清晰的Android Socket通信Demo,包括服务端和客户端的实现。介绍了Socket的基本原理,区分了基于TCP和UDP的通信方式。在TCP中,服务器通过ServerSocket监听并接收客户端数据,而客户端创建Socket连接并发送数据。UDP通信则涉及DatagramSocket,通过数据报包的形式进行传输。文章还给出了部分源代码片段。
摘要由CSDN通过智能技术生成

思路超简单的Android Socket 通信  Demo 注释详细

demo下载  http://download.csdn.net/detail/menglele1314/9280379

服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。

Socket类型为流套接字(streamsocket)和数据报套接字(datagramsocket)。

Socket基本实现原理

TCP与UDP
1基于TCP协议的Socket
服务器端首先声明一个ServerSocket对象并且指定端口号,然后调用Serversocket的accept()方法接收客户端的数据。accept()方法在没有数据进行接收的处于堵塞状态。(Socketsocket=serversocket.accept()),一旦接收到数据,通过inputstream读取接收的数据。
客户端创建一个Socket对象,指定服务器端的ip地址和端口号(Socketsocket=newSocket("172.168.10.108",8080);),通过

好的,我将为您提供一个简单的nanomsg的req/rep模式的服务器和客户端通信demo,使用C语言编写服务器端和Python编写客户端。 首先,您需要安装nanomsg库。在CentOS上,您可以使用以下命令进行安装: ``` sudo yum install nanomsg-devel ``` 接下来,我们开始编写服务器端代码。 服务器端代码(server.c): ```c #include <stdio.h> #include <nanomsg/nn.h> #include <nanomsg/reqrep.h> #define SOCKET_ADDRESS "tcp://127.0.0.1:5555" // 定义服务器地址 int main() { int sock = nn_socket(AF_SP, NN_REP); // 创建socket if (sock < 0) { printf("Error creating socket: %s\n", nn_strerror(nn_errno())); return -1; } int bind_result = nn_bind(sock, SOCKET_ADDRESS); // 绑定socket if (bind_result < 0) { printf("Error binding socket: %s\n", nn_strerror(nn_errno())); nn_close(sock); return -1; } while (1) { char *buf = NULL; int bytes = nn_recv(sock, &buf, NN_MSG, 0); // 接收客户端消息 if (bytes < 0) { printf("Error receiving message: %s\n", nn_strerror(nn_errno())); nn_close(sock); return -1; } printf("Received message: %s\n", buf); char *response = "abc"; int send_result = nn_send(sock, response, strlen(response) + 1, 0); // 发送响应 if (send_result < 0) { printf("Error sending response: %s\n", nn_strerror(nn_errno())); nn_freemsg(buf); nn_close(sock); return -1; } nn_freemsg(buf); } nn_close(sock); // 关闭socket return 0; } ``` 代码解释: - `nn_socket(AF_SP, NN_REP)` 创建一个REP类型的socket,用于接收并回复客户端消息。 - `nn_bind(sock, SOCKET_ADDRESS)` 将socket绑定到指定的地址上。 - `nn_recv(sock, &buf, NN_MSG, 0)` 接收客户端的消息,将接收到的消息保存在buf中,并返回消息的长度。 - `nn_send(sock, response, strlen(response) + 1, 0)` 发送响应给客户端。 - `nn_close(sock)` 关闭socket。 接下来,我们编写Python客户端代码。 客户端代码(client.py): ```python import nnpy SOCKET_ADDRESS = "tcp://127.0.0.1:5555" # 定义服务器地址 def main(): sock = nnpy.Socket(nnpy.AF_SP, nnpy.REQ) # 创建socket sock.connect(SOCKET_ADDRESS) # 连接服务器 message = b"123" sock.send(message) # 发送消息 response = sock.recv() # 接收响应 print("Received response: %s" % response.decode()) sock.close() # 关闭socket if __name__ == "__main__": main() ``` 代码解释: - `nnpy.Socket(nnpy.AF_SP, nnpy.REQ)` 创建一个REQ类型的socket,用于发送请求给服务器。 - `sock.connect(SOCKET_ADDRESS)` 连接服务器。 - `sock.send(message)` 发送消息给服务器。 - `sock.recv()` 接收服务器的响应。 - `sock.close()` 关闭socket。 现在,您可以编译并运行服务器端代码,然后运行客户端代码,客户端将发送消息“123”给服务器,服务器将收到消息并回复“abc”,客户端将接收到响应并打印出来。 编译服务器端代码: ``` gcc -o server server.c -lnanomsg ``` 运行服务器端代码: ``` ./server ``` 运行客户端代码: ``` python client.py ``` 这样,您就成功地实现了一个使用nanomsg的req/rep模式的服务器和客户端通信demo,客户端发送内容“123”,服务器回复“abc”。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值