安卓与linux服务器进行socket通信错误:BrokenPipeError 10C

我在linux上写了个python脚本,作为socket 服务器,安卓作为socket客户端,进行socket通信。linux的ip为192.168.80.100,socket端口为12345。
先启动socket服务器,再启动客户端,用客户端发送消息,服务器可以很好收到,但要对消息进行一段时间的处理,等到再发返回给客户端消息时,python就会出现:

 BrokenPipeError: [Errno 32] Broken pipe

这是安卓socket客户端代码:

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import  java.net.Socket;

public class MainActivity extends AppCompatActivity {
    private TextView result = null;
    private static final String HOST = "192.168.80.100";
    private static final int PORT = 12345;
    private Socket socket = null;
    private BufferedReader bufferedReader = null;
    private PrintWriter printWriter = null;
    private String string = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText eturl= findViewById(R.id.eturl);
        Button btn= findViewById(R.id.btn);

        initSocket();
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String message;
                message = eturl.getText().toString();
                if (socket.isConnected()){
                    if (!socket.isOutputShutdown()){
                        Toast.makeText(MainActivity.this,"正在发送,请稍等……",Toast.LENGTH_LONG).show();
                        sendMsg(message);
                    }
                }
            }
        });
    }

    protected void sendMsg(final String message){
        new Thread(new Runnable() {
            @Override
            public void run() {
                if(socket.isConnected()){
                    if(!socket.isOutputShutdown()){
                        printWriter.println(message);
                    }
                }
            }
        }).start();
    }

    protected void initSocket(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    socket=new Socket(HOST,PORT);
                    bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    printWriter=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
                    if(socket!=null){
                        if (socket.isConnected()) {
                            if (!socket.isInputShutdown()) {
                                if ((string = bufferedReader.readLine()) != null) {
                                    Log.i("TAG","++"+string);
                                    string+="";
                                    handler.sendEmptyMessage(1);

                                } else {    //TODO
                                }
                            }
                        }
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

    public Handler handler;

    {
        handler = new Handler() {
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
                    Log.i("TAG", "--" + msg);
                    result.setText(new StringBuilder().append(result.getText().toString()).append(string).toString());
                }
            }
        };
    }

}

可能是安卓客户端在收到消息前已经关闭了socket,但要怎么解决呢,时间很急,求大神请教!不胜感激

6个回答

qq_40939785
Eumenides-Z 具体到我这个要怎么改呢?
一年多之前 回复

建议参考一下:
Python脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

建议参考一下:
socket编程—— 服务器遇到Broken Pipe崩溃
https://www.cnblogs.com/jingzhishen/p/3453727.html

socket编程—— 服务器遇到Broken Pipe崩溃
https://www.cnblogs.com/jingzhishen/p/3453727.html

网络连接断开了,一个是安卓客户端可能发现一段时间没有数据发送,就把连接断开了。如果服务端需要随时发送数据给客户端,需要两者之间建立心跳连接

但是安卓电源管理机制等,可能在手机休眠等的状况还是会进行连接关闭和app结束

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
同一wifi下,安卓手机与linux虚拟机socket通信
我在linux虚拟机上建立了socket服务器,物理机为windows10,在安卓上建立socket客户端,是在Android Studio上写的,准备进行简单的socket通信。 当我在Android Studio上用安卓模拟器时,可以成功通信并处理。但我导出apk,安装在实体安卓手机上的时候,就连接不上,而且我windows物理机和安卓手机是在同一wifi环境下的。 windows和linux虚拟机可以ping互通,两边防火墙都关了。 实体通信需要什么具体的条件吗,为什么安卓模拟器可以成功,实体就连不上了? 急求解答!!!
手机安卓客户端和电脑服务器进行socket通信,为什么socket不通?
手机安卓客户端和电脑服务器进行socket通信,程序都是java写的,客户端socket函数填的是电脑的外网ip(百度搜出来那个),手机用的是3g信号,但是socket不通。。是ip填错了吗?
c++客户端与php服务器进行socket通信
如题,小弟目前在做一款游戏,客户端是cocos2d-x的c++代码,服务器用的php,现在进行socket通信,其他一切还好,就是在发送信息前面,加上4字节的包头时,怎么样发送,服务器都无法解析,有知道的大侠帮忙解一下惑吗?小弟在此万分感谢~~~ 代码如下: #pragma pack(1) struct SocketPackage { int Package_Length; int Package_Head; char Package_String[512]; }; #pragma pack() 如果不加两个int字段,一切ok,加上两个int字段后,转成string发送给服务器,服务器总是解析不出我的数据。请诸位知道的大侠不吝赐教~
Flashftp数据Socket错误:链接已超时
Flashftp链接服务器ftp时出现“数据Socket错误:链接已超时 列表错误”,网上找了下将ftp设置改为被动模式就可以解决这个问题,但是看我的客户端ftp软件配置数据连接模式就是“被动模式(PASV)”的。 ![](http://www.w3dev.cn/imgblog/20141124/1016590575.jpg) ![](http://www.w3dev.cn/imgblog/20141124/1017147761.jpg)
android socket通信,,手机在3g网下与pc通信,手机与手机之间通过socket通信
现在有个项目中是需要用gprs模块与手机之间进行通信,我在实验的时候是通过手机与pc机之间通信以及手机与手机之间通信来实验,在同个局域网下我用手机与pc之间进行socket通信是可以的,但是我用百度查寻pc的公网ip地址然后与手机通信就不行了。。现在请求大神的帮助呀。。
android与PC用socket通信
写了一个小的测试程序,android手机和PC进行通信。 服务器(PC)端代码: public class SimpleServer { public static void main(String[] args) throws IOException { // 创建一个ServerSocket,用于监听客户端Socket的连接请求 ServerSocket ss = new ServerSocket(30000); //① // 采用循环不断接受来自客户端的请求 while (true) { // 每当接受到客户端Socket的请求,服务器端也对应产生一个Socket Socket s = ss.accept(); OutputStream os = s.getOutputStream(); os.write("您好,您收到了服务器的新年祝福!\n" .getBytes("utf-8")); // 关闭输出流,关闭Socket os.close(); s.close(); } } } 客户端(android)代码: public class SimpleClient extends Activity { EditText show; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); show = (EditText) findViewById(R.id.show); new Thread() { @Override public void run() { try { // �������ӵ�Զ�̷�������Socket Socket socket = new Socket("192.168.0.100" , 30000); //�� // ��Socket��Ӧ����������װ��BufferedReader BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream())); // ������ͨIO���� String line = br.readLine(); show.setText("���Է���������ݣ�" + line); // �ر���������socket br.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } } 先启动PC机上的服务端,再启动安卓手机客户端,结果客户端无反应。 初步判断应该是客户端socket构造函数里的第一个参数IP地址错误,请问这个地址应该填公网地址还是本地局域网地址?(网络环境:路由器宽带接入,PC有线接路由器,Android无线连WIFI)
windows客户端和linux服务端socket通信失败,connect返回-1,求助
windows客户端和linux服务端socket通信失败,connect返回-1,查了下error是10060,但是双方能ping通,利用tcpdump抓包得到 10:57:36.096818 IP 192.168.1.104.3904 > 192.168.1.100.8887: Flags [S], seq 1236760459, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0 10:57:39.097671 IP 192.168.1.104.3904 > 192.168.1.100.8887: Flags [S], seq 1236760459, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0 10:57:45.098355 IP 192.168.1.104.3904 > 192.168.1.100.8887: Flags [S], seq 1236760459, win 65535, options [mss 1460,nop,nop,sackOK], length 0 求大神帮忙看下为啥connect失败
Socket通信编程,客户端为Android,服务器端为Python
android客户端向python端进行socket通信,客户端发送消息后,服务器端可以正常接收。但服务器发送消息后,一种情况:客户端收到后就立马闪退出了;第二种:或者客户端没收到,停在那里什么反应也没有。 python服务器端第一种情况: ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531775740_388745.png) python服务器端第二种情况: ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531775853_134427.png) 下面是android客户端代码: ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531776022_448677.png) ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531776103_115531.png) ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531776144_408356.png) ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531776238_96142.png) ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531776276_11960.png) 要实现同一个android客户端可以向服务器多次进行发送消息,并可以接收服务器的消息,而且客户端不会闪退,要怎么修改代码呢? 急求解答,希望能详细一点!
linux虚拟机与windows间socket通信问题
虚拟机linux服务端 windows客户端 虚拟机桥接模式,能互相ping到,但运行连接不上 linux Server #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<sys/wait.h> #define BACKLOG 5 int main(int arge,char *argv[]) { int sockfd,new_fd; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size; int data[2]; int sum ; if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) { perror("socket fail"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(12345); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&(my_addr.sin_zero),0); if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1) { perror("bind fail"); exit(1); } if(listen(sockfd,BACKLOG) ==-1) { perror("listen fail"); exit(1); } while(1) { sin_size = sizeof(struct sockaddr_in); printf("hello\n"); if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size)) == -1) { perror("accept fail"); continue; } printf("Server:got connection from %s\n",inet_ntoa(their_addr.sin_addr)); if(!fork()) { while(1) { if((recv(new_fd,data,sizeof(data),0)) == -1) { printf("recv fail"); break; } sum = data[0] +data[1]; send(new_fd,(const char*)(char*)&sum,sizeof(sum),0); } close(new_fd); exit(0); } } close(new_fd); close(sockfd); return 0; } windows客户端 // Client.cpp : 定义控制台应用程序的入口点。 // //#include "stdafx.h" #include <iostream> #include <winsock.h> #pragma comment(lib, "ws2_32.lib") using namespace std; int main(int argc, char* argv[]) { try { //初始化套接字库 //WSAStartup WORD wVersion = MAKEWORD(2, 2); WSADATA wsaData; if (0 != ::WSAStartup(wVersion, &wsaData)) { throw "WSAStartup fail!"; } if (2 != HIBYTE(wsaData.wVersion) || 2 != LOBYTE(wsaData.wVersion)) { throw "Verify version fail!"; } //创建一个SOCKET //socket SOCKET sock = ::socket(AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == sock) { throw "Create socket fail!"; } //初始化一个有效地址(给大堂经理一个胸签) //SOCKADDR_IN SOCKADDR_IN serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(12345); serverAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.15"); //连接服务器 if (SOCKET_ERROR == ::connect(sock, (const sockaddr*)&serverAddr, sizeof(serverAddr))) { int iError = ::WSAGetLastError(); cout << "connect fail!" << endl; //::Sleep(5000); } while (1) { int iSendData[2]; cout << "Please input data:" << endl; cin >> iSendData[0] >> iSendData[1]; ::send(sock, (const char*)&iSendData, sizeof(iSendData), 0); //::send(sock, "1111111", sizeof("1111111"), 0); //char szRecvBuf[100]; //::recv(sock, (char*)szRecvBuf, sizeof(szRecvBuf), 0); //接收应答 int iSum = 0; ::recv(sock, (char*)&iSum, sizeof(iSum), 0); cout << iSum <<endl; // cout << szRecvBuf << endl; } ::closesocket(sock); ::WSACleanup(); } catch (char* pStr) { cout << pStr << endl; return -1; } return 0; } ``` 一运行客户端就显示连接失败,求大神解决
Linux编程socket通信疑问
# Socket通信疑问 今天,在进行socket通信时,发现一个问题,尝试许久后,问能找到答案。 ## 程序功能:   使用socket通信编写服务器与客户端之间的循环应答,直到客户端发送"bye",服务器发送命令关闭客户端,并且服务器关闭。 具体问题描述: ### 服务器程序: ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <sys/un.h> int main(void){ int socketfd = socket(AF_LOCAL,SOCK_DGRAM,0); if ( socketfd == -1 ){ perror("socket"); exit(-1); } struct sockaddr_un add; add.sun_family = AF_UNIX ; strcpy(add.sun_path,"./sigcom"); //unlink("./sigcom"); int res = bind(socketfd,(struct sockaddr *)&add,sizeof(add)); if( res == -1){ perror("bind"); exit(-1); } // res = connect(socketfd,(struct sockaddr *)&add,sizeof(add)); // if( res == -1){ // perror("bind"); // exit(-1); // } char buf[20]; while(1){ read(socketfd,buf,sizeof(buf)); printf("%s\n",buf); if (!strcmp(buf,"bye")){ write(socketfd,"goodbye",sizeof("goodbye")); printf("GoodBye!\n"); break; }else{ int d = write(socketfd,"Recived!",sizeof("Recived!")); if (d == -1){ perror("write"); } printf("Send!\n"); } } close(socketfd); return 0; } ``` ### 客户端程序: ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <sys/un.h> int main(void){ int socketfd = socket(AF_LOCAL,SOCK_DGRAM,0); if ( socketfd == -1 ){ perror("socket"); exit(-1); } struct sockaddr_un add; add.sun_family = AF_UNIX ; strcpy(add.sun_path,"./sigcom"); int res = connect(socketfd,(struct sockaddr *)&add,sizeof(add)); if( res == -1){ perror("connect"); exit(-1); } char buf[20]; while(1){ scanf("%s",buf); write(socketfd,buf,sizeof(buf)); read(socketfd,buf,sizeof(buf)); printf("%s\n",buf); if (!strcmp(buf,"goodbye")){ printf("%s\n",buf); break; }else{ printf("%s\n",buf); } } printf("退出通信!\n"); close(socketfd); return 0; } ```   其中,在服务器这段程序中: ``` while(1){ read(socketfd,buf,sizeof(buf)); printf("%s\n",buf); if (!strcmp(buf,"bye")){ write(socketfd,"goodbye",sizeof("goodbye")); printf("GoodBye!\n"); break; }else{ int d = write(socketfd,"Recived!",sizeof("Recived!")); if (d == -1){ perror("write"); } printf("Send!\n"); } } ``` "write"函数出错:Transport endpoint is not connected。 在各种尝试后未能找到解决办法。
FTPClient设置被动模式了,本地电脑没有问题,但是在Linux服务器上运行报错。连接失败
## windows防火墙linuxftp操作文件FTPClient下载文件,本地Windows可以下载、删除,但是放到Linux服务器上就报错, ## 已经设置为被动模式了,还会是防火墙问题吗? ## ftp.retrieveFileStream(file)在这个地方报错,错误信息如下: [20170809 09:09:58.029] java.net.PlainSocketImpl.socketConnect(Native Method) [20170809 09:09:58.029] java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) [20170809 09:09:58.029] java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) [20170809 09:09:58.029] java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) [20170809 09:09:58.029] java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) [20170809 09:09:58.029] java.net.Socket.connect(Socket.java:529) [20170809 09:09:58.029] java.net.Socket.connect(Socket.java:478) [20170809 09:09:58.029] java.net.Socket.(Socket.java:375) [20170809 09:09:58.029] java.net.Socket.(Socket.java:189) [20170809 09:09:58.029] org.apache.commons.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:53) [20170809 09:09:58.029] org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:513) [20170809 09:09:58.029] org.apache.commons.net.ftp.FTPClient.retrieveFileStream(FTPClient.java:1342)
python爬虫的奇葩错误,socket.gaierror: [Errno 11001] getaddrinfo failed
```''' 文件名:爬取斗鱼直播间信息到jsonline文件.py ''' from __future__ import unicode_literals import multiprocessing import socket import time import re import requests from bs4 import BeautifulSoup import json # 配置socket的ip和端口 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = socket.gethostbyname("openbarrage.douyutv.com") port = 8601 client.connect((host, port)) # 获取用户昵称及弹幕信息的正则表达式 danmu = re.compile(b'type@=chatmsg.*?/nn@=(.*?)/txt@=(.*?)/.*?/level@=(.*?)/.*?/bnn@=(.*?)/bl@=(.*?)/') def sendmsg(msgstr): ''' 客户端向服务器发送请求的函数,集成发送协议头的功能 msgHead: 发送数据前的协议头,消息长度的两倍,及消息类型、加密字段和保密字段 使用while循环发送具体数据,保证将数据都发送出去 ''' msg = msgstr.encode('utf-8') data_length = len(msg) + 8 code = 689 msgHead = int.to_bytes(data_length, 4, 'little') \ + int.to_bytes(data_length, 4, 'little') + int.to_bytes(code, 4, 'little') client.send(msgHead) sent = 0 while sent < len(msg): tn = client.send(msg[sent:]) sent = sent + tn def start(roomid): ''' 发送登录验证请求后,获取服务器返回的弹幕信息,同时提取昵称及弹幕内容 登陆请求消息及入组消息末尾要加入\0 ''' msg = 'type@=loginreq/roomid@={}/\0'.format(roomid) sendmsg(msg) msg_more = 'type@=joingroup/rid@={}/gid@=-9999/\0'.format(roomid) sendmsg(msg_more) print('---------------欢迎连接到{}的直播间---------------'.format(get_name(roomid))) while True: data = client.recv(1024) danmu_more = danmu.findall(data) if not data: break else: with open(format(get_name(roomid)) + time.strftime('%Y.%m.%d', time.localtime(time.time())) + '直播弹幕', 'a') as f: try: for i in danmu_more: dmDict = {} # print(i) dmDict['昵称'] = i[0].decode(encoding='utf-8', errors='ignore') dmDict['弹幕内容'] = i[1].decode(encoding='utf-8', errors='ignore') dmDict['等级'] = i[2].decode(encoding='utf-8', errors='ignore') dmDict['徽章昵称'] = i[3].decode(encoding='utf-8', errors='ignore') dmDict['徽章等级'] = i[4].decode(encoding='utf-8', errors='ignore') dmJsonStr = json.dumps(dmDict, ensure_ascii=False) + '\n' # print(dmDict['昵称']) print(dmDict['弹幕内容']) f.write(dmJsonStr) danmuNum = danmuNum + 1 except: continue def keeplive(): ''' 发送心跳信息,维持TCP长连接 心跳消息末尾加入\0 ''' while True: msg = 'type@=mrkl/\0' sendmsg(msg) time.sleep(45) def get_name(roomid): ''' 利用BeautifulSoup获取直播间标题 ''' r = requests.get("http://www.douyu.com/" + roomid) soup = BeautifulSoup(r.text, 'lxml') return soup.find('a', {'class', 'Title-anchorName'}).string # 启动程序 if __name__ == '__main__': room_id = input('请输入房间ID: ') p1 = multiprocessing.Process(target=start, args=(room_id,)) p2 = multiprocessing.Process(target=keeplive) p1.start() p2.start() ```在别人电脑可以运行,但是在自己的电脑上就报错 附上报错截图,有大神可以帮忙处理一下吗?万分感谢 报错: E:\pythonzzz\venv\Scripts\python.exe E:/pythonzzz/爬虫/z3.py Traceback (most recent call last): File "E:/pythonzzz/爬虫/z3.py", line 17, in <module> host = socket.gethostbyname("openbarrage.douyutv.com") socket.gaierror: [Errno 11001] getaddrinfo failed Process finished with exit code 1
请问java socket 如何与 nodejs socket 通信
java socket 如何与 nodejs socket 通信,例如nodejs的socket.on()里面的第一个参数是如何识别的?我用的客户端是java写的,服务器端是nodejs写的,现在java通过socket与服务器端通信,如何用java模拟nodejs的socket.emin()方法?
Linux编程socket通信问题。
# Socket通信疑问 请原谅我是个小白,可能问题比较幼稚。 今天,在进行socket通信时,发现一个问题,尝试许久后,问能找到答案。 ## 程序功能:   使用socket通信编写服务器与客户端之间的循环应答,直到客户端发送"bye",服务器发送命令关闭客户端,并且服务器关闭。 具体问题描述: ### 服务器程序: ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <sys/un.h> int main(void){ int socketfd = socket(AF_LOCAL,SOCK_DGRAM,0); if ( socketfd == -1 ){ perror("socket"); exit(-1); } struct sockaddr_un add; add.sun_family = AF_UNIX ; strcpy(add.sun_path,"./sigcom"); //unlink("./sigcom"); int res = bind(socketfd,(struct sockaddr *)&add,sizeof(add)); if( res == -1){ perror("bind"); exit(-1); } // res = connect(socketfd,(struct sockaddr *)&add,sizeof(add)); // if( res == -1){ // perror("bind"); // exit(-1); // } char buf[20]; while(1){ read(socketfd,buf,sizeof(buf)); printf("%s\n",buf); if (!strcmp(buf,"bye")){ write(socketfd,"goodbye",sizeof("goodbye")); printf("GoodBye!\n"); break; }else{ int d = write(socketfd,"Recived!",sizeof("Recived!")); if (d == -1){ perror("write"); } printf("Send!\n"); } } close(socketfd); return 0; } ``` ### 客户端程序: ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <sys/un.h> int main(void){ int socketfd = socket(AF_LOCAL,SOCK_DGRAM,0); if ( socketfd == -1 ){ perror("socket"); exit(-1); } struct sockaddr_un add; add.sun_family = AF_UNIX ; strcpy(add.sun_path,"./sigcom"); int res = connect(socketfd,(struct sockaddr *)&add,sizeof(add)); if( res == -1){ perror("connect"); exit(-1); } char buf[20]; while(1){ scanf("%s",buf); write(socketfd,buf,sizeof(buf)); read(socketfd,buf,sizeof(buf)); printf("%s\n",buf); if (!strcmp(buf,"goodbye")){ printf("%s\n",buf); break; }else{ printf("%s\n",buf); } } printf("退出通信!\n"); close(socketfd); return 0; } ```   其中,在服务器这段程序中: ``` while(1){ read(socketfd,buf,sizeof(buf)); printf("%s\n",buf); if (!strcmp(buf,"bye")){ write(socketfd,"goodbye",sizeof("goodbye")); printf("GoodBye!\n"); break; }else{ int d = write(socketfd,"Recived!",sizeof("Recived!")); if (d == -1){ perror("write"); } printf("Send!\n"); } } ``` "write"函数出错:Transport endpoint is not connected。 在各种尝试后未能找到解决办法。
Android用同一个socket通信的问题
# Android用同一个socket通信,socket不关闭,但手机上一个界面会把下一个界面的socket流接收掉,怎么解决?
android 客户端socket连接服务器,socket何时close
假设socket连接好了,现在客户端向服务器发送完了数据,这个时候需要关闭socket吗? 如果关闭后,某个时候又需要发送其他数据,再建立连接? 还是说建立通信协议,一次socket连接后一直保持通信状态,根据通信协议对不同的数据进行不同的处理,然后等客户端程序退出时再关闭socket。
安卓Wifi连接实现socket通信
两部安卓手机通过Wifi连接,通过socket通信,Wifi由路由器发出,但socket的IP地址写的是路由器的地址根本无法实现通信,是哪里有错吗??
linux socket 通信问题 ?
我在2两台虚拟机上分别运行linux 服务端和客服端socket程序,客户端和服务端能正常通信,但是我用wireshark 抓包时确没抓到有这两个虚拟机的通信包,请问高手们这个是啥情况??
socket通信,我的计算机连不上服务器
我在阿里云上面租了一个服务器,然后在我的电脑上能用socket协议与服务器通信吗
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Android性能优化(4):UI渲染机制以及优化
文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从Android 6.0源码的角度剖析View的绘制原理一文中,我们了解到View的绘制流程有三个步骤,即m...
微服务中的Kafka与Micronaut
今天,我们将通过Apache Kafka主题构建一些彼此异步通信的微服务。我们使用Micronaut框架,它为与Kafka集成提供专门的库。让我们简要介绍一下示例系统的体系结构。我们有四个微型服务:订单服务,行程服务,司机服务和乘客服务。这些应用程序的实现非常简单。它们都有内存存储,并连接到同一个Kafka实例。 我们系统的主要目标是为客户安排行程。订单服务应用程序还充当网关。它接收来自客户的请求...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器,关于Tomcat的所有属性都在ServerProperties配置类中。同时,也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置,网络上有大量的资料,但都是基于SpringBoot1.5.x版本,并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
爬取薅羊毛网站百度云资源
这是疫情期间无聊做的爬虫, 去获取暂时用不上的教程 import threading import time import pandas as pd import requests import re from threading import Thread, Lock # import urllib.request as request # req=urllib.request.Requ...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c# 为空 判断 委托 c#记事本颜色 c# 系统默认声音 js中调用c#方法参数 c#引入dll文件报错 c#根据名称实例化 c#从邮件服务器获取邮件 c# 保存文件夹 c#代码打包引用 c# 压缩效率
立即提问

相似问题