From WikiChip
Editing mirc/sockets/tcp

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 20: Line 20:
  
 
=== IPv4 vs. IPv6 Sockets ===
 
=== IPv4 vs. IPv6 Sockets ===
The /sockopen command is directly influenced by the Ipv6 mode you have going on. Check {{mIRC|Ipv6|this page}} for more informations about IPv6.
+
The /sockopen command is directly influenced by the type of connection you have going on (I.e. /server -4/-6). When in standard IPv4 mode, /sockopen can only operate in IPv4 mode. It is not possible to make IPv6 sockets. When in IPv6, /sockopen will default to IPv6 addresses only. By going to the Option Dialog:
 +
 
 +
(Alt+O) -> Connect -> Options -> Ports... -> [X] Prioritize IPv6 over IPv4
 +
 
 +
Checking that checkbox will allow you to create IPv4 connections as well by telling mIRC to fall back to IPv4 if IPv6 failed.
 +
 
 +
'''Note:''' There is currently no convenient way to do this only using the /sockopen command.
  
 
=== Connection Example ===
 
=== Connection Example ===
Line 31: Line 37:
 
}</syntaxhighlight>
 
}</syntaxhighlight>
  
The above alias will create a socket by the name "example1". We can use that name to manipulate our socket later on. As a precaution, in order to not attempt to open an already opened socket, we will close it. If the socket is not open, mIRC will simply do nothing. In the advanced part of this tutorial we will explain how to handle this situation more gracefully by creating dynamic names which will give us the ability to create as many sockets as we need.
+
The above alias will create a socket by the name "example1". We can use that name to manipulate our socket late on. As a precaution, in order to not attempt to open an already opened socket, we will close it. If the socket is not open, mIRC will simply do nothing. In the advanced part of this tutorial we will explain how to handle this situation more gracefully by creating dynamic names which will give us the ability to create as many sockets as we need.
  
 
<syntaxhighlight lang="mirc">alias example1 {
 
<syntaxhighlight lang="mirc">alias example1 {
Line 55: Line 61:
  
 
== The Socket Mark ==
 
== The Socket Mark ==
In the example above we introduced another command, the {{mIRC|/sockmark}} command. The {{mIRC|/sockmark}} command lets you store some text for that socket which can easily be retrieved using the {{mIRC|$sock|$sock().mark}} identifier later on. This is a better alternative to using global variables (or any other kind of global storage method) because you don't need to clean it up later. The socket mark goes away automatically with the socket when it is closed.
+
In the example above we introduced another command, the {{mIRC|/sockmark}} command. The {{mIRC|/sockmark}} command lets you store some text for that socket which can easily be retrieved using the {{mIRC|$sock|$sock().mark}} identifier later on. This is a better alternative to using a global variables (or any other kind of global storage method) because you don't need to clean it up later. The socket mark goes away automatically with the socket when it is closed.
  
 
<syntaxhighlight lang="mirc">sockmark <handle> <value>
 
<syntaxhighlight lang="mirc">sockmark <handle> <value>
Line 61: Line 67:
 
sockmark <handle></syntaxhighlight>
 
sockmark <handle></syntaxhighlight>
  
The socket mark is restricted to the same line limit as the rest of mIRC (just under 4,150 bytes). A {{mirc|wildcard}} pattern can be used in the handle parameter to set the value of multiple sockets at once.
+
The socket mark is restricted to the same line limit as the rest of mIRC (just under 4,150 bytes). A wildcard pattern can be used in the handle parameter to set the value of multiple sockets at once.
  
 
<syntaxhighlight lang="mirc">; Our socket mark value:
 
<syntaxhighlight lang="mirc">; Our socket mark value:
Line 122: Line 128:
 
The sending buffer is limited to 16384 bytes. /sockwrite will produce an error if you try to add more in the buffer. However, if the buffer is empty, it won't produce an error and will work.
 
The sending buffer is limited to 16384 bytes. /sockwrite will produce an error if you try to add more in the buffer. However, if the buffer is empty, it won't produce an error and will work.
  
In a typical script using HTTP and the {{mIRC|TCP Sockets#POST_vs_GET.3F|GET method}} to grab something from a website, it's unlikely that you will reach this limit but note that when using {{mIRC|TCP Sockets#POST_vs_GET.3F|POST}}, it's more likely to reach that limit, you can find an example on how to workaround this by using the on sockwrite event {{mIRC|on events/on sockwrite#Examples|here}}
+
In a typical script using HTTP and the {{mIRC|TCP Sockets#POST_vs_GET.3F|GET method}} to grab something from a website, it's unlikely that you will reach this limit but note that when using {{mIRC|TCP Sockets#POST_vs_GET.3F|POST}}, it's more likely to reach that limit, you can find an example on how to workaround this by using the on sockwrite event {{mIRC|on sockwrite#Examples|here}}
  
 
=== Sending Data Example ===
 
=== Sending Data Example ===
Line 213: Line 219:
  
 
== Reading Incoming Data ==
 
== Reading Incoming Data ==
Once the server receives your request, it will send the response back to you. This will trigger the {{mIRC|on events/on sockread|on sockread}} event. The basic syntax of the on sockread event is:
+
Once the server receives your request, it will send the response back to you. This will trigger the {{mIRC|on sockread}} event. The basic syntax of the on sockread event is:
  
 
<syntaxhighlight lang="mirc">on *:sockread:<handle>: {
 
<syntaxhighlight lang="mirc">on *:sockread:<handle>: {
Line 373: Line 379:
 
'''Note:''' Only the remote end-port, not you, can trigger this event.
 
'''Note:''' Only the remote end-port, not you, can trigger this event.
  
[[Category:mIRC|sockets tcp]]
+
[[Category:mIRC]]

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)