Связь с сервером-гнездом в Socket [дубликат]

Я предлагаю вам сделать что-то другое, это выполнить транспонирование, группу по префиксу строк (ваши исходные столбцы), sum и транспонировать снова.

Рассмотрим следующее:

df = pd.DataFrame({
        'a_a': [1, 2, 3, 4],
        'a_b': [2, 3, 4, 5],
        'b_a': [1, 2, 3, 4],
        'b_b': [2, 3, 4, 5],
    })

Теперь

[s.split('_')[0] for s in df.T.index.values]

является префиксом столбцов. Таким образом,

>>> df.T.groupby([s.split('_')[0] for s in df.T.index.values]).sum().T
    a   b
0   3   3
1   5   5
2   7   7
3   9   9

делает то, что вы хотите.

В вашем случае обязательно разделите, используя символ '-'.

130
задан Coffee 5 October 2012 в 00:07
поделиться

17 ответов

Да, у вас есть другой процесс, связанный с одним и тем же портом.

TCPView (только для Windows) из Windows Sysinternals - мое любимое приложение, когда у меня есть ошибка JVM_BIND. Он показывает, какие процессы прослушивают порт. Он также предоставляет удобное контекстное меню, чтобы либо убить процесс, либо закрыть соединение, которое мешает.

98
ответ дан informatik01 18 August 2018 в 07:29
поделиться
  • 1
    Большое спасибо, TcpView - это A + – Coffee 5 October 2012 в 02:25
  • 2
    быстро работать: Открыть вид сервера & gt; дважды щелкните по серверу & gt; изменить используемые номера портов (т. е. для администратора Tomcat, HTTP / 1.1 и AJP / 1.3) – Adrien Be 27 September 2013 в 08:01
  • 3
    TCPView работал для меня thx много :) – Chris Sim 21 March 2016 в 11:55
  • 4
    есть ли подобный инструмент / команда для linux? – novice_developer 6 April 2017 в 20:03
  • 5
    @novice_developer netstat - это команда, которую вы ищете, с параметрами -a и -p, man netstat является вашим другом для всех остальных :) – sox 26 July 2017 в 20:38

В окнах

netstat -ano

будут перечислены все протоколы, порты и процессы прослушивания. Используйте

taskkill -pid "proces to kill" /f

, чтобы убить процесс, прослушивающий порт. например

 taskkill -pid 431 /f
81
ответ дан Abhi 18 August 2018 в 07:29
поделиться
  • 1
    thankssssssssssssss – funky-nd 30 July 2016 в 20:50
  • 2
    netstat -ano | найти "номер вашего порта & quot; Используйте это в Windows для конкретного порта. – BlondCode 28 December 2016 в 15:32

Порт уже используется каким-то другим процессом, поскольку @Diego Pino сказал, что вы можете использовать lsof в unix, чтобы найти процесс и убить соответствующий, если вы на окнах, используйте netstat -ano, чтобы получить все pids процесс и порты, которые все приобретают. найдите ваш предполагаемый порт и убейте.

, чтобы быть очень просто, просто перезагрузите компьютер, если это возможно:)

1
ответ дан Akash Yadav 18 August 2018 в 07:29
поделиться

В Ubuntu / Unix мы можем решить эту проблему, выполнив 2 шага, как описано ниже.

 1. Use netstat -plten |grep java

Он выдаст такой вывод

tcp   0   0 0.0.0.0:8080   0.0.0.0:*  LISTEN   1001  76084  9488/java       

Здесь port no is 8080, на котором запущен Java-процесс. И его id процесса (pid) есть 9488 перед java (9488/java).

2. Now to resolve the Address already in use problem you
have to kill this process using this command.

kill -9 9488

Здесь: -9 для полной остановки и 9488 это идентификатор процесса.

Теперь снова запустите сервер. Надеемся, что этот ответ вам поможет.

29
ответ дан Bharti Rawat 18 August 2018 в 07:29
поделиться
  • 1
    kill & lt; pid & gt; не работает на mac, kill -9 & lt; PID & gt; работал со мной – Samy Omar 15 January 2014 в 00:49

Если вы знаете, какой порт работает, вы можете ввести: lsof -i:<port>.

Например, lsof -i:8080, чтобы отобразить процесс (pid), запущенный на порту 8080.

Затем уничтожьте процесс с помощью kill <pid>

147
ответ дан biniam_Ethiopia 18 August 2018 в 07:29
поделиться

В строке Windows CMD найдите идентификатор процесса, который содержит соединение на порту связывания, введя следующую команду:

C:> netstat -a -o

-a показать все соединения

- показать идентификатор процесса

И затем завершить процесс.

4
ответ дан CharlesX 18 August 2018 в 07:29
поделиться

Я столкнулся с аналогичной проблемой в Eclipse, когда две консоли были открыты при первом запуске программы Server, а затем в программе клиента. Раньше я останавливал программу в единственной консоли, думая, что она закрыла сервер, но закрыла клиент, а не сервер. Я нашел запущенные процессы Java в диспетчере задач. Эта проблема была решена путем закрытия как серверных, так и клиентских программ с их отдельных консолей (Eclipse показывает консоль последней активной программы). Поэтому, когда я снова запустил программу Server, порт снова был открыт для захвата.

0
ответ дан Chetan Gowda 18 August 2018 в 07:29
поделиться

У вас есть другой процесс, выполняющийся на одном и том же порту.

Вы можете попробовать убить одну из java.exe-служб, запущенных в вашем диспетчере задач - ps убедитесь, что вы не убиваете eclipse, так как это указано как java.exe. Если ничего не работает, перезапуск вашей машины все равно исправит. Похоже, вы не закрываете сокет из предыдущего теста. Надеюсь, это поможет.

7
ответ дан javarebel 18 August 2018 в 07:29
поделиться

Перезагрузите компьютер один раз, я думаю, он будет работать. Он начал работать в моем случае. Еще одна вещь может быть выполнена в диспетчере задач и завершении процесса.

1
ответ дан Kumar 18 August 2018 в 07:29
поделиться
  • 1
    Пожалуйста, не отвечайте с комментарием / вопросом. Было бы желательно, если бы вы удалили это. – Clijsters 16 May 2018 в 09:20
  • 2
    Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - Из обзора – Clijsters 16 May 2018 в 09:20

Для тех, кто ищет самый простой из ответов (поскольку это то, что мы обычно пропускаем), просто запустите свой проект и запустите его снова. В большинстве случаев мы забываем остановить проект, который мы запускали раньше, и когда мы повторно запускаем проект, он показывает такую ​​проблему.

Я также прикрепляю фотографию, чтобы сделать ее более ясной (я использую «Набор инструментов Spring»). Так что вам нужно сделать либо щелкнуть кнопку в крайнем правом углу, если вы хотите перезапустить тот же проект или сначала нажать на кнопку, которая является 2-м справа, чтобы остановить ваш проект, а затем кнопку в крайнем левом углу ваш проект. Надеюсь, это решит проблему нескольких новых программистов. :)

2
ответ дан Learner 18 August 2018 в 07:29
поделиться

Это означает, что какой-то другой процесс уже использует порт. В случае, если этот порт используется некоторыми другими критическими приложениями, и вы не хотите закрывать это приложение, лучший способ - выбрать любой другой порт, который будет свободен в использовании.

Настройте приложение для использования любого другого порта, который является бесплатным, и вы увидите, что ваше приложение работает.

0
ответ дан Rakesh Burbure 18 August 2018 в 07:29
поделиться

(только для Windows)

Чтобы убить процесс, вам сначала нужно найти идентификатор процесса (pid)

. Запустив команду:

netstat -ano | findstr :yourPortNumber

Вы получите свой идентификатор процесса (PID), теперь, чтобы убить тот же процесс, запустите эту команду:

taskkill /pid yourid /f

3
ответ дан Sufiyan Ansari 18 August 2018 в 07:29
поделиться

Ваш порт должен быть занят каким-либо другим процессом. Таким образом, вы можете загрузить TCPView на https://technet.microsoft.com/en-us/sysinternals/bb897437 и убить процесс для используемого порта.

Если вы не узнайте свой порт, дважды щелкните на сервере, который не запускается, и нажмите «Открыть страницу свойств сервера» и нажмите на стеклянную рыбку слева. Здесь вы найдете порты.

0
ответ дан Suketu Patel 18 August 2018 в 07:29
поделиться

(1) проверить, что порт используется или нет, убить этот процесс

$ lsof -i: [port]

(2) другой причиной является использование порта ipv6, решение:

изменить /etc/sysctl.conf

добавить это в файл

net.ipv6.conf.all.disable_ipv6 = 1

затем сделайте эффект

$ sudo sysctl -p /etc/sysctl.conf

или просто перезагрузите

0
ответ дан tonysok 18 August 2018 в 07:29
поделиться

Да, как сказал Гвидо Симоне, потому что другой процесс прослушивает тот же порт. Если вы находитесь в Ubuntu, вы можете просто убить этот процесс, выдав команду sudo kill $(sudo lsof -t -i:[port number])

ex: sudo kill $(sudo lsof -t -i:8080)

Но как только это не сработало для меня. я дал команду

$ lsof -i:[port] 

и ничего не показывает.

Я проверил контейнеры докеров с помощью команды docker ps -a, но не из них. Все контейнеры остановились (но я помню, я остановил один контейнер, который использовался один и тот же порт несколько минут назад.). что докер не является причиной, я останавливаю весь процесс докера с помощью команды sudo service docker stop и повторю попытку. Удивительно, что затмение не показало ошибки в то время. Он отлично работает с моей программой.

Надеюсь, мой опыт поможет кому-то.

2
ответ дан Yasitha Bandara 18 August 2018 в 07:29
поделиться
29
ответ дан Bharti Rawat 6 September 2018 в 20:57
поделиться
29
ответ дан Bharti Rawat 30 October 2018 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: